31

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

3 回答 3

1

如果您只想使行高于其文本高度所需的高度,您可以尝试在行的第一个单元格中插入一个 0xN 透明图像(如果 Qt 不允许您执行零宽度,则为 1xN)。

也可以使用 QTextTableCellFormat::setTopPadding() 设置表格单元格的顶部填充,或者使用 QTextBlockFormat::setTopMargin() 设置顶部边距。但是填充和边距都被添加到文本布局高度AFAIK,所以它们都不是非常适合设置绝对高度。

你看过卡利格拉吗?它的libs/kotext 和 libs/textlayout库实现了一个自定义的 QAbstractTextDocumentLayout,它对表格的支持比 QTextEdit 丰富得多。

于 2013-08-02T00:37:26.780 回答
1

看来您可以使用 setHTML(QString) 或 insertHTML(QString) 函数来插入样式表。

当将此功能与样式表一起使用时,样式表将仅适用于文档中的当前块。为了在整个文档中应用样式表,请改用 QTextDocument::setDefaultStyleSheet()。

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

appart from using shims ....根据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>
于 2013-06-06T00:15:06.493 回答
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 -支柱

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

于 2013-10-10T17:23:39.197 回答