我正在尝试为单个字符更新QTextCharFormat。但它没有应用:
QTextCursor cursor(document());
cursor.setPosition(4);
QTextCharFormat format;
format.setFontPointSize(sizeString.toInt());
cursor.mergeCharFormat(format);
qDebug() << "SET POS " << cursor.position() << " TO " << sizeString.toInt();
QTextCursor cursor2(document());
cursor.setPosition(4);
QTextCharFormat charformat = cursor2.charFormat();
QFont font = charformat.font();
qDebug() << " LOADED FONTSIZE: " << font.pointSize();
输出:
SET POS 4 TO 16
LOADED FONTSIZE: 36
知道缺少什么吗?
答案 0 :(得分:2)
要应用更改,您必须选择一部分文本(例如在真实编辑器中)。 您只需将光标设置到一个位置而不实际选择。
如果要选择文本,则必须将光标移动到另一个位置并保持选择开始。
cursor.setPosition(4);
cursor.setPosition(5, QTextCursor::KeepAnchor);
这将光标设置到位置4.然后将光标移动到位置5,但保留选择锚点。这导致选择位置4和5之间的所有内容。
现在您的更改将应用于选择。
答案 1 :(得分:0)
正确用法示例:
获取QTextEdit的光标
QTextEdit *editor = new QTextEdit();
QTextCursor cursor(editor->textCursor());
cursor.movePosition(QTextCursor::Start);
设置不同的QTextCharFormat
QTextCharFormat plainFormat(cursor.charFormat());
QTextCharFormat headingFormat = plainFormat;
headingFormat.setFontWeight(QFont::Bold);
headingFormat.setFontPointSize(16);
QTextCharFormat emphasisFormat = plainFormat;
emphasisFormat.setFontItalic(true);
现在使用不同的格式在文本编辑中插入文本
cursor.insertText(tr("Character formats"),
headingFormat);
cursor.insertBlock(); // Single character
cursor.insertText(tr("a"), emphasisFormat);
cursor.insertText(tr("b"), headingFormat);
cursor.insertBlock();
cursor.insertText(tr("Text can be displayed in a variety of "
"different character formats. "), plainFormat);
cursor.insertText(tr("We can emphasize text by "));
cursor.insertText(tr("making it italic"), emphasisFormat);
如果您想实时更改可编辑窗口小部件的样式,只需渲染具有不同样式的文本,您可以在此网址中找到一个示例:Syntax Highlighter Example