Я пишу сложный текстовый редактор, полученный из 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);
}
кажется, что вы можете использовать функции setHTML (QString) или insertHTML (QString) для вставки таблицы стилей.
При использовании этой функции с таблицей стилей, таблица стилей будет только
применить к текущему блоку в документе. Для того, чтобы применить стиль
лист во всем документе, используйте QTextDocument :: setDefaultStyleSheet ()
вместо.
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>
Если вы просто хотите сделать строки более высокий чем требуется высота текста, вы можете попробовать вставить прозрачное изображение 0xN в первую ячейку строки (или 1xN, если Qt не позволит вам использовать нулевую ширину).
Также возможно установить верхний отступ ячейки таблицы с помощью QTextTableCellFormat :: setTopPadding () или установить верхнее поле с помощью QTextBlockFormat :: setTopMargin (). Но и отступы, и поля добавляются к высоте текстового макета AFAIK, поэтому ни один из них не очень хорош для установки абсолютной высоты.
Вы смотрели на Calligra? это libs / kotext и libs / textlayout библиотеки реализуют пользовательский QAbstractTextDocumentLayout с гораздо более богатой поддержкой таблиц, чем QTextEdit.
Вставьте таблицу стилей, используя 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.)
Я думаю, что есть возможность получить доступ к первому курсору в ячейке и получить blockFormat()
блока ().
Вы устанавливаете высоту blockFormat с помощью setLineHeight
.Вы сможете сделать это, установив тип и высоту.
Это увеличит высоту ряда.
Я не знаю других решений.
setLineHeight
метод не существовал когда-то давно.