2013-03-20 4 views
31

Я пишу сложный текстовый редактор, полученный из класса QTextEdit. Он должен иметь возможность вставлять, изменять размер и применять различные форматирования во встроенные таблицы.Как изменить высоту строки в QTextTable

Я нашел функцию для установки ширины столбцов (setColumnWidthConstraints). Но нет никого, чтобы change _rows_ heights.

Есть ли способ достичь этого?

Пример кода:

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

можно использовать QTextFrameFormat :: setHeight (qreal height) –

+1

@Cool_Coder Это просто изменило высоту _all_ кадра (т.е. там, где будет отображаться граница). Но мне нужно указать высоту для любой отдельной строки таблицы. – eraxillan

+0

может показать код, чтобы я мог прокомментировать это? –

ответ

1

, кажется, что вы можете использовать функции setHTML (QString) или insertHTML (QString), чтобы вставить таблицу стилей.

При использовании этой функции с таблицей стилей таблица стилей будет только применить к текущему блоку в документе. Чтобы применить лист стиля в документе, используйте вместо него QTextDocument :: setDefaultStyleSheet() .

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

аппарт с помощью регулировочных шайб .... согласно http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/richtext-html-subset.html вы можете установить декларации шрифта.

Qt, кажется, направлены спецификации CSS2.1, который, как следует .. http://www.w3.org/TR/CSS2/fonts.html#propdef-font

вы пробовали указать шрифт в строке таблицы.

пройти следующую строку, используя insertHTML, где эта строка delcared как QString

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

Если вы просто хотите, чтобы ряды высоких, чем их высота текста потребуются, вы можете попробовать вставки 0xN прозрачной изображение в первой ячейке строки (или 1xN, если Qt не позволит вам делать нулевую ширину).

Возможно также установить верхнее заполнение ячейки таблицы QTextTableCellFormat :: setTopPadding() или, возможно, установить верхнее поле с QTextBlockFormat :: setTopMargin(). Но как дополнение, так и поля добавляются к высоте макета текста AFAIK, поэтому ни одна из них не очень хороша для установки абсолютной высоты.

Вы посмотрели Calligra? Его библиотеки libs/kotext and libs/textlayout реализуют пользовательский QAbstractTextDocumentLayout с гораздо более богатой поддержкой таблицы, чем QTextEdit.