2013-03-20 20 views
31

Piszę skomplikowany edytor tekstu sformatowanego, wywodzący się z klasy QTextEdit. Musi być w stanie wstawić, zmienić rozmiar i zastosować różne formatowanie do osadzonych tabel.Jak zmienić wysokość wiersza w QTextTable

Znalazłem funkcję konfiguracji szerokości kolumn (setColumnWidthConstraints). Ale nie ma nikogo do change _rows_ heights.

Czy jest jakiś sposób, aby to osiągnąć?

Przykładowy kod:

void CustomTextEdit::insertTable (int rows_cnt, int columns_cnt) 
{ 
    QTextCursor cursor = textCursor(); 
    QTextTableFormat table_format; 
    table_format.setCellPadding (5); 

    // TODO: This call just changed the frame border height, not table itself. 
    //table_format.setHeight (50); 

    // Setup columns widths - all is working perfectly. 
    QVector <QTextLength> col_widths; 
    for (int i = 0; i < columns_cnt; ++i) 
     col_widths << QTextLength (QTextLength::PercentageLength, 100.0/columns_cnt); 
    table_format.setColumnWidthConstraints (col_widths); 

    // ...But there is no similar function as setRowHeighConstraints for rows! 

    // Insert our table with specified format settings 
    cursor.insertTable (rows_cnt, columns_cnt, table_format); 
} 
+0

można użyć QTextFrameFormat :: setHeight (qreal height) –

+1

@Cool_Coder To właśnie zmieniło wysokość _all_ ramki (tj., gdzie zostanie pokazana granica). Ale muszę określić wysokość dla każdego oddzielnego wiersza tabeli. – eraxillan

+0

może proszę o podanie kodu, aby móc to skomentować? –

Odpowiedz

1

wydaje się, że można użyć setHTML (QString) lub insertHTML (QString) funkcji, aby wstawić arkusz stylów.

Podczas korzystania z tej funkcji z arkuszem stylów arkusz stylów ma tylko zastosowanie do bieżącego bloku w dokumencie. Aby zastosować arkusz stylu w całym dokumencie, należy zamiast tego użyć QTextDocument :: setDefaultStyleSheet() .

ref: http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/qtextedit.html#insertHtml

appart z użyciem podkładek .... według http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/richtext-html-subset.html można ustawić deklarację czcionki.

Qt wydaje się być ukierunkowane specyfikację CSS2.1, który jest jak następuje .. http://www.w3.org/TR/CSS2/fonts.html#propdef-font

próbowałeś określenie czcionki w wierszu tabeli.

zdać następujący ciąg przy użyciu insertHTML, gdzie ten ciąg jest delcared jako QString

<style> 
table > tr {font-size: normal normal 400 12px/24px serif;} 
</style> 
0

jeśli po prostu chcesz, aby rzędy wyższe niż ich wysokość tekstu wymaga, można spróbować wstawiając 0xN przezroczysty obraz w pierwszej komórce wiersza (lub 1xN, jeśli Qt nie pozwoli ci zrobić zerowej szerokości).

Możliwe jest również ustawienie górnej krawędzi komórki tabeli za pomocą QTextTableCellFormat :: setTopPadding() lub ustawienie górnego marginesu za pomocą QTextBlockFormat :: setTopMargin(). Ale dopełnienie i marginesy są dodawane do wysokości układu tekstu AFAIK, więc żadne z nich nie jest bardzo dobre do ustawienia bezwzględnej wysokości.

Czy obejrzałeś Calligra? Jego biblioteki libs/kotext and libs/textlayout implementują niestandardowy QAbstractTextDocumentLayout z dużo bogatszą obsługą tabel niż QTextEdit.

Powiązane problemy