Извините, если это вопрос новичков. У меня есть код для маркировки ошибок в редакторе, и я не могу найти, как очистить маркировку, когда ошибки исчезли. Вот метод, который я вызываю для визуализации ошибок.Как очистить ExtraSelections в QPlainTextEdit
void Editor::highlightErrors(Thing* t)
{
if (!t)
return;
const std::vector<Thing::Error>& errors = t->errors();
QTextCursor tc = textCursor();
tc.select(QTextCursor::Document);
QList<QTextEdit::ExtraSelection> extraSelections;
for(int i = 0; i < errors.size(); ++i) {
const Thing::Error& error = errors[i];
QTextEdit::ExtraSelection sel;
sel.format = this->errorFormat();
sel.format.setToolTip(QString(error.error.c_str()));
sel.cursor = tc;
sel.cursor.clearSelection();
sel.cursor.setPosition(error.startPos);
sel.cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, error.endPos - error.startPos);
sel.cursor.mergeCharFormat(sel.format);
extraSelections.append(sel);
}
setExtraSelections(extraSelections);
}
Я ожидал бы QPlainTextEdit перекроить текст без ошибок формата, когда этот метод вызывается без ошибок, но это не так. QTextLayout :: draw правильно вызывается, а дополнительные выборы также очищаются, но текст по-прежнему рисуется с использованием формата ошибки.
Спасибо за помощь.