Russian Qt Forum

Qt => Общие вопросы => Тема начата: titan83 от Июнь 23, 2016, 21:01



Название: Добавить 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)