Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Ilya_181 от Октябрь 16, 2017, 00:12



Название: Цвет отдельных слов в ComboBox
Отправлено: Ilya_181 от Октябрь 16, 2017, 00:12
Есть текст. Производится поиск. После, все строки в которых был найден запрос поиска, помещаются в ComboBox.
Вопрос как выделить искаемое слово другим цветом в ComboBox? Я хотел бы выделить желтым цветом background.



Название: Re: Цвет отдельных слов в ComboBox
Отправлено: Igors от Октябрь 16, 2017, 09:16
Наверное все-таки "искомое"  :) Навскидку:
Цитировать
void QComboBox::setItemData(int index, const QVariant & value, int role = Qt::UserRole)
Засылаете желтый браш с Qt::BackgroundRole


Название: Re: Цвет отдельных слов в ComboBox
Отправлено: Ilya_181 от Октябрь 16, 2017, 20:33
Код
C++ (Qt)
ui->comboBox_question->setItemData(i,QBrush(Qt::green),Qt::BackgroundRole);

Эта строка кода устанавливает только зеленый фон. А мне нужно выделить не всю строку, а только под одним словом. Выделить только конкретное слово.
Как этого можно добиться?

(http://i.piccy.info/i9/071b1a27c36050e32c8f2864a85fc50d/1508175118/4088/1182417/Tekst_poyska.png)


Название: Re: Цвет отдельных слов в ComboBox
Отправлено: Igors от Октябрь 17, 2017, 07:35
А мне нужно выделить не всю строку, а только под одним словом. Выделить только конкретное слово.
Как минимум есть setItemDelegate (хотя это возня). И глянтье в этом направлении (http://apocalyptech.com/linux/qt/qcombobox_html/) (сам не копал, первая попавшаяся ссылка). Может удастся проскочить по-быстрому


Название: Re: Цвет отдельных слов в ComboBox
Отправлено: Ilya_181 от Ноябрь 04, 2017, 19:55
Вроде код уже сделан. Осталось сделать текст в виде HTML. Однако с этим проблема. Выделение желтым уже происходит, но края закруглить не могу, и вообще рамка не отрисовывается.
    
Код
C++ (Qt)
QString str = "Текст <span style=background: yellow; border: 1.3px solid gray; padding: 1px; border-radius: 5px>"
                 "поиск</span>а в котором нужно выделить слово <span style=background:yellow; "
                 "border: 1.3px solid gray;padding: 1px; border-radius: 5px>поиск</span>";
Насколько я почитал, это Qt не распознает теги? Или все-таки можно сделать границы выделения и закруглить их?

Такой код правильно работает в браузере, именно как мне нужно.
Код
HTML
<span style="background:yellow; border: 1.3px solid gray; padding: 1px; border-radius: 5px"> ... </span>