Подтвердить что ты не робот

Как изменить высоту строки в QTextTable

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

Я нашел функцию для ширины столбцов установки (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);
}
4b9b3361

Ответ 1

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

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

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

appart с помощью прокладок.... в соответствии с 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, где эта строка делится как QString

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

Ответ 2

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

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

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