Название: Добавить html-теги для QTextEdit'а Отправлено: titan83 от Июнь 23, 2016, 21:01 Коллеги, добрый день.
Тут попал я слегка. Суть: есть строка (лог), выводится в QTextEdit, все хорошо, но хочется сделать цветное выделение некоторой части очередной записи, не проблема - обрамляем интересующий участок чем-то вроде <span style=\"background-color: #FFDE00; color:black;\">%InstrumentValue%</span> Использовал я QString.replace() и горя не знал. Но обнаружилась проблема: искомая строка (обычно число) иногда может быть и в других позициях, например, MNR-107050-2,J.Lucena,6/11/2007 9:12:30 PM,66.00,-0.3112,0.4332,0.5050 Меня интересуют последние три числа, их цвета я хочу поменять (засунуть число вместо %InstrumentValue%), но если число из 4 столбца (здесь - 66.00) будет таким же, как и в третьем, то оно тоже будет подсвеченным - replace() заменяет все вхождения. MNR-107050-2,J.Lucena,6/11/2007 9:12:30 PM,66.00,66.00,0.4332,0.5050 Вообще, я особо не парился, т.к. сами строки я разбираю регулярками, то думал, что и QString.replace(QRegularExpression, QString) решит эту досадную проблемку, но тут я словил epic fail - заменяется ВСЁ регулярное выражение, (un)capturing groups не поддерживаются( Вопрос: как поменять в QString строку в определенной позиции? Спасибо. Название: Re: Добавить html-теги для QTextEdit'а Отправлено: PimenS от Июнь 23, 2016, 21:14 У вас строка всегда имеет одинаковое число "столбцов"?
Название: Re: Добавить html-теги для QTextEdit'а Отправлено: titan83 от Июнь 23, 2016, 21:28 В том и сложность, что инструменты разные и строки от них разные, даже от одного инструмента строка может изменяться в зависимости от его настроек, поэтому для разбора строк использую регулярки - тут все четко.
Название: Re: Добавить html-теги для QTextEdit'а Отправлено: kambala от Июнь 23, 2016, 21:53 QRegularExpression матчит сам по себе и выдает позиции каждой группы, по этим данным и делай замену. у replace есть перегрузка принимающая позицию и длину.
Название: Re: Добавить html-теги для QTextEdit'а Отправлено: m_ax от Июнь 23, 2016, 22:30 В том и сложность, что инструменты разные и строки от них разные, даже от одного инструмента строка может изменяться в зависимости от его настроек, поэтому для разбора строк использую регулярки - тут все четко. Буквально на днях эта тема обсуждалась здесь: http://www.prog.org.ru/topic_30197_0.html (http://www.prog.org.ru/topic_30197_0.html) |