QPlainTextEdit强制重绘



我想强制重新绘制qplaintexttedit小部件,因为我的高亮显示规则发生了变化。然而,所有的线和块都不会重新绘制,以尊重新规则。

这是真的,因为如果我修改一行,就会应用正确的高亮显示,我很高兴。但是我不能强制修改每个块来查看任何更改!

有办法强制重画吗?我尝试了update()和类似的方法,但似乎没有任何工作。

谢谢!

qplaintexttedit继承了QAbstractScrollArea,所以它的内容位于视窗小部件中。试试这个:

text_edit->viewport()->update();

您必须调用QSyntaxHighlighter::rehighlight()才能将新的突出显示规则应用于整个文档。

您可以尝试:

text_edit->repaint();

在我的例子中,简单地调用rehighlight不更新视图。在我的情况下,我想更新高亮时,光标移动,所以:

void MyHighlighter::onSelectionChanged(int start, int end)
{
    _visibleCursor.setPosition(end);
    document()->documentLayout()->updateBlock(_visibleCursor.block());
    rehighlightBlock(_visibleCursor.block());
}

相关内容

  • 没有找到相关文章

最新更新