Здравствуйте.
Пишу редактор кода с подсветкой синтаксиса, за основу взял стандартный пример QT4 из demos.
Все хорошо, но хочется добавить подсветку пользовательских классов (видел такое например в FlashDevelop).
Сейчас сделал вот так:
//...........
QStringList ids;
//добавил классы приложения в базу
for (int i = 0; i < classes.size(); i++)
{
QString cid = file.addClassInDb(classes[i]);
ids << cid;
}
lib.qMessageBox("", "before addClass");
editor->highlighter->addClasses(ids); //добавил новые правила для SyntaxHighlighter
//ОДНАКО ЧТОБЫ НОВЫЕ СЛОВА ПОДСВЕТИЛИСЬ НАДО ОБНОВИТЬ ТЕКСТ
//В TextEdit
lib.qMessageBox("", "post addClass");
QTextCursor cursor = editor->textCursor(); //получил позицию курсора
int cpos = cursor.position();
//Все бы ничего, но между вот этим сообщением
lib.qMessageBox("", "before setText");
editor->setPlainText(c);
//и вот этим
lib.qMessageBox("", "after setText");
//проходит около 2 секунд
cursor.setPosition(cpos);
editor->setTextCursor(cursor);
То есть после добавления правил подсветки синтаксиса, чтобы слова реально подсветились, я обновляю текст в QTextEdit. Если я этого не делаю слова подсвечиваются только после того как пользователь установит курсор на окончание требуемого слова и введет что нибудь, пробел например или интер. Однако выполнение editor->setPlainText(content) занимает довольно много времени, может быть можно как-то еще решить проблему?