在QTextDocument中设置默认字符格式

时间:2016-05-11 10:33:38

标签: qt qtextedit qtextdocument

我有一个QTextEdit,用户可以在其中修改QTextDocument

我想设置文档的默认颜色和字体,但是,当doucment中没有文本时,将丢弃该格式。

这是我的代码:

QTextDocument *d = new QTextDocument;
QTextCursor cur(d);
cur.select(QTextCursor::Document);

QTextBlockFormat f1;
f1.setBackground(Qt::black);
f1.setForeground(Qt::yellow);
cur.setBlockFormat(f1);

QTextCharFormat f2;
f2.setForeground(Qt::yellow);
QFont font("Times New Roman", 12);
f2.setFont(font);
cur.setBlockCharFormat(f2);

editor->setDocument(d);

当显示编辑器时,我看到一条黑色背景的线条,具有一定的高度。所以看起来这很有效。

但是,一旦我开始输入,线条大小就会减少,我看不到任何文字。选择输入的文本时,我可以看到它是黑色的(在黑色背景上),并且它的字体被更改。

当我使用光标插入一些非空文本时,一切正常,编辑时格式不会改变:

// Same as above...
cur.insertText("A");
editor->setDocument(d);

编辑器是否保留格式,而不插入虚拟文本?

我无法在编辑器中使用样式表或调色板,如本主题的其他问题所述。必须使用QTextFormat s

完成所有操作

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。

问题是编辑器的光标没有所需的样式信息,并且正在插入具有默认样式的文本。编辑器的光标必须更新。

解决方案只是将光标移动到文档的开头,在那里它将获取样式:

// Build document as required...
editor->setDocument(d);

// This fixes the problem:
QTextCursor editorCursor = editor->textCursor();
editorCursor.movePosition(QTextCursor::Start);
editor->setTextCursor(editorCursor);