【问题标题】:QPlainTextEdit force redrawQPlainTextEdit 强制重绘
【发布时间】:2013-06-10 10:21:11
【问题描述】:
我想强制重绘 QPlainTextEdit 小部件,因为我的突出显示规则发生了变化。但是,根据新规则,不会重绘所有线条和块。
这是真的,因为如果我修改一行,就会应用正确的突出显示,我很高兴。但是我不能强制修改每个块来查看任何变化!
有没有办法强制重绘?我尝试了 update() 和类似方法,但似乎没有任何效果。
谢谢!
【问题讨论】:
标签:
qt
widget
syntax-highlighting
qwidget
qtextedit
【解决方案1】:
QPlainTextEdit 继承了 QAbstractScrollArea,因此它的内容位于视口窗口小部件中。试试这个:
text_edit->viewport()->update();
【解决方案3】:
你可以试试:
text_edit->repaint();
【解决方案4】:
在我的情况下,只需调用 rehighlight 就不会更新视图。在我的情况下,我想在光标移动时更新高亮:
void MyHighlighter::onSelectionChanged(int start, int end)
{
_visibleCursor.setPosition(end);
document()->documentLayout()->updateBlock(_visibleCursor.block());
rehighlightBlock(_visibleCursor.block());
}