2013-06-10 2 views
1

Я хотел бы заставить перерисовать поверх виджета QPlainTextEdit, потому что мои правила подсветки изменились. Однако все строки и блоки не перерисовываются, соблюдая новые правила.QPlainTextEdit force redraw

Это верно, потому что, если я изменяю линию, применяется правильная подсветка, и я счастлив. Но я не могу принудительно модифицировать каждый блок, чтобы увидеть какие-либо изменения!

Есть ли способ заставить перерисовать? Я попробовал update() и similars, но ничего не работает.

Спасибо!

ответ

2

QPlainTextEdit наследует QAbstractScrollArea, поэтому его содержимое находится в видовом виджетах. Попробуйте это:

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

Вы можете попробовать:

text_edit->repaint(); 
0

В моем случае просто вызвать rehighlight не обновлять вид. В моем случае я хочу обновить подсветку, когда курсор перемещается так:

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