我正在编写源自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);
}
答案 0 :(得分:1)
您似乎可以使用setHTML(QString)或insertHTML(QString)函数来插入样式表。
将此功能与样式表一起使用时,样式表将仅显示 适用于文档中的当前块。为了应用一种风格 整个文档中的工作表,使用QTextDocument :: setDefaultStyleSheet() 代替。
使用垫片...根据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 :(得分:0)
如果你只想让行更高而不是文本高度需要,你可以尝试在行的第一个单元格中插入一个0xN透明图像(如果Qt不允许你,则尝试1xN做零宽度。
也可以使用QTextTableCellFormat :: setTopPadding()设置表格单元格的顶部填充,或者可以使用QTextBlockFormat :: setTopMargin()设置顶部边距。但是填充和边距都添加到文本布局高度AFAIK中,因此它们都不适合设置绝对高度。
你看过Calligra了吗?它的libs/kotext and libs/textlayout库实现了一个自定义的QAbstractTextDocumentLayout,它具有比QTextEdit更丰富的表支持。
答案 2 :(得分: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中也可用。)