Russian Qt Forum
Апрель 24, 2024, 14:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавить html-теги для QTextEdit'а  (Прочитано 3461 раз)
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 строку в определенной позиции?
Спасибо.
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Июнь 23, 2016, 21:14 »

У вас строка всегда имеет одинаковое число "столбцов"?
Записан
titan83
Гость
« Ответ #2 : Июнь 23, 2016, 21:28 »

В том и сложность, что инструменты разные и строки от них разные, даже от одного инструмента строка может изменяться в зависимости от его настроек, поэтому для разбора строк использую регулярки - тут все четко.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Июнь 23, 2016, 21:53 »

QRegularExpression матчит сам по себе и выдает позиции каждой группы, по этим данным и делай замену. у replace есть перегрузка принимающая позицию и длину.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #4 : Июнь 23, 2016, 22:30 »

В том и сложность, что инструменты разные и строки от них разные, даже от одного инструмента строка может изменяться в зависимости от его настроек, поэтому для разбора строк использую регулярки - тут все четко.

Буквально на днях эта тема обсуждалась здесь: http://www.prog.org.ru/topic_30197_0.html
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.