Как изменить высоту строки в 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);
}

31

Решение

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

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

ссылка: 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>
1

Другие решения

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

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

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

0

Вставьте таблицу стилей, используя this->document()->setDefaultStyleSheet("css goes here");

Увидеть http://qt-project.org/doc/qt-5.0/qtwidgets/qtextedit.html#document-prop
а также http://qt-project.org/doc/qt-5.0/qtgui/qtextdocument.html#defaultStyleSheet-prop

(ссылки идут на документы Qt5, но эти функции также доступны в Qt4.)

0

Я думаю, что есть возможность получить доступ к первому курсору в ячейке и получить blockFormat() блока ().

Вы устанавливаете высоту blockFormat с помощью setLineHeight.Вы сможете сделать это, установив тип и высоту.

Это увеличит высоту ряда.

Я не знаю других решений.

setLineHeight метод не существовал когда-то давно.

0
По вопросам рекламы [email protected]