текст, правильно набранные буквы становятся зелеными, неправильно -- красными).
Подскажите, как правильно сделать подсветку букв цветом? Я делаю это с помощью html тегов, но получается довольно громоздко.
Может, есть более элегантное решение?
да, правильнее, наверное - использовать QSynaxHighliter, но проще, наверное - QTextFormat
chatgpt
спасибо. смотрю.
но поскольку ты уже юзаешь в коде html-теги, то значит ты уже вычленяешь случаи попадания и непопадания в символы. И символы у тебя определяются и место в тексте уже определяется. Думаю в этом случае тебе стоит сначала поgробовать использовать QTextFormat, даже лучше QCharTextFormat тупо определить два различных формата, а затем в зависимости от кейса применять один или другой void QTextCursor::setCharFormat(const QTextCharFormat &format)
при использовании QSyntaxHighliter по сути ты сделаешь тоже самое.. только формат будет определяться не конкретно для каждого символа, а в общем случае по какому-то условию (обычно это регулярки, в зависимости от валидности текста в отношении той или иной регулярки тот или иной формат применяется). Но никто не мешает использовать [protected] void QSyntaxHighlighter::setFormat(int start, int count, const QTextCharFormat &format) без предварительного определения start & count с помощью регулярных выражений, а указывать напрямую... ты же знаешь позицию нужного символа. Какой из вариантов тебе больше по душе, тот и юзай. Но по сути второй сводится к первому, а рендеринг HTML (как ты делаешь) сводится ко второму.
Ну мне идеально чтоб было два вектора одинаковой длины: один с текстом, другой с цветом букв. ну и при вводе я бы просто меняла элементы в векторе цвета.
QString text; QTextCharFormat validFormat; QTextCharFormat invalidFormat; QVector<QPair<quint32,QTextCharFormat*> > formats; или QMap <quint32,QTextCharFormat*> formats; или struct ... и вектор, вариантов то море же
Обсуждают сегодня