Добрый вечер. Я пишу тренажер печати (набираешь отображаемый в TextEdit

текст, правильно набранные буквы становятся зелеными, неправильно -- красными).

Подскажите, как правильно сделать подсветку букв цветом? Я делаю это с помощью html тегов, но получается довольно громоздко.
Может, есть более элегантное решение?

8 ответов

19 просмотров

да, правильнее, наверное - использовать QSynaxHighliter, но проще, наверное - QTextFormat

chatgpt

Nastya-Medveda Автор вопроса
Nastya Medveda
спасибо. смотрю.

но поскольку ты уже юзаешь в коде html-теги, то значит ты уже вычленяешь случаи попадания и непопадания в символы. И символы у тебя определяются и место в тексте уже определяется. Думаю в этом случае тебе стоит сначала поgробовать использовать QTextFormat, даже лучше QCharTextFormat тупо определить два различных формата, а затем в зависимости от кейса применять один или другой void QTextCursor::setCharFormat(const QTextCharFormat &format)

Nastya Medveda
Спасибо.

при использовании QSyntaxHighliter по сути ты сделаешь тоже самое.. только формат будет определяться не конкретно для каждого символа, а в общем случае по какому-то условию (обычно это регулярки, в зависимости от валидности текста в отношении той или иной регулярки тот или иной формат применяется). Но никто не мешает использовать [protected] void QSyntaxHighlighter::setFormat(int start, int count, const QTextCharFormat &format) без предварительного определения start & count с помощью регулярных выражений, а указывать напрямую... ты же знаешь позицию нужного символа. Какой из вариантов тебе больше по душе, тот и юзай. Но по сути второй сводится к первому, а рендеринг HTML (как ты делаешь) сводится ко второму.

Nastya-Medveda Автор вопроса
Angry Subst
при использовании QSyntaxHighliter по сути ты сдел...

Ну мне идеально чтоб было два вектора одинаковой длины: один с текстом, другой с цветом букв. ну и при вводе я бы просто меняла элементы в векторе цвета.

Nastya Medveda
Ну мне идеально чтоб было два вектора одинаковой д...

QString text; QTextCharFormat validFormat; QTextCharFormat invalidFormat; QVector<QPair<quint32,QTextCharFormat*> > formats; или QMap <quint32,QTextCharFormat*> formats; или struct ... и вектор, вариантов то море же

Похожие вопросы

Обсуждают сегодня

ох, как мне это нравится - "уточнить стоимость и получить консультацию"... есть знатоки лицензий, они не должны ли исходники открыть?
Artem (☞゚ヮ゚)☞ Bortnikov
4
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
13
Кто создает тут ботов для телеграмм групп ?
Antskup
8
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
господа, когда у вас в боте есть локализация (ру + англ, остальные языки пока не планируются), вы на первом старте как с языком решаете вопрос: смотрите на language_code приле...
Denis 🐍|👑 | darling! 🥰
5
Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Карта сайта