如何在QTextTable中更改行高

时间:2013-03-20 08:04:08

标签: c++ qt qtextedit

我正在编写源自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);
}

3 个答案:

答案 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传递以下字符串,其中此字符串被指定为QString

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

答案 1 :(得分:0)

如果你只想让行更高而不是文本高度需要,你可以尝试在行的第一个单元格中插入一个0x​​N透明图像(如果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-prophttp://qt-project.org/doc/qt-5.0/qtgui/qtextdocument.html#defaultStyleSheet-prop

(链接转到Qt5文档,但这些功能在Qt4中也可用。)