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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отображение элементов QComboBox'а разными шрифтами.  (Прочитано 5067 раз)
joke
Гость
« : Июль 13, 2010, 13:59 »

Здравствуйте.
Есть следующая задача: есть набор элементов (названия могут быть одинаковыми), есть текущий элемент.
Необходимо выделить элементы в соответствии с внутренним представлением.
Есть идея что это можно сделать выделяя шрифтом или цветом, пример выбор шрифта в OpenOffice.
А вот как? Подбросите пример или доку?
Записан
BRE
Гость
« Ответ #1 : Июль 13, 2010, 14:03 »

Делегат прицепить.
void QComboBox::setItemDelegate ( QAbstractItemDelegate * delegate )
Записан
joke
Гость
« Ответ #2 : Июль 13, 2010, 14:12 »

Ладушки, спрошу по другому.
Хочу если CriticalPOD().isIt(combo->itemData().toInt()) то данный itemText() отобразить как bold.
Смотрю в QAbstractItemDelegate и никак непойму куда этот bold засунуть.
Записан
BRE
Гость
« Ответ #3 : Июль 13, 2010, 14:18 »

Ладушки, спрошу по другому.
Хочу если CriticalPOD().isIt(combo->itemData().toInt()) то данный itemText() отобразить как bold.
Смотрю в QAbstractItemDelegate и никак непойму куда этот bold засунуть.
Делегат тебе позволит самому рисовать каждый итем комба, захочешь его нарисовать жирным/другим цветом или фонтом - пожалуйста.
Почитай в assistant про делегаты, посмотри примеры. Делегаты - это важный механизм для изменения внешнего вида/поведения разных виджетом.
Записан
joke
Гость
« Ответ #4 : Июль 13, 2010, 14:23 »

Мобуть нашел: QStyleOptionComboBox, пример QStyleOption (manual)
Записан
BRE
Гость
« Ответ #5 : Июль 13, 2010, 14:26 »

Мобуть нашел: QStyleOptionComboBox, пример QStyleOption (manual)
Вот эти классы и позволяют упростить процесс рисования своих элементов.
Записан
joke
Гость
« Ответ #6 : Июль 13, 2010, 14:30 »

QStyledItemDelegate -> displayText???
Записан
joke
Гость
« Ответ #7 : Июль 13, 2010, 14:33 »

Фигню сказал...
Записан
joke
Гость
« Ответ #8 : Июль 19, 2010, 11:13 »

короче, пример:
Код:
void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem itemStyle(option);
if (index.isValid())
{
QVariant data = index.data(Qt::UserRole);
qDebug() << data.toString();
if (data.isValid())
{

bool ok = false;
int val = data.toInt(&ok);
qDebug() << val << "." << ok;
if (ok && val < 0)
{
if (!itemStyle.font.bold())
{
itemStyle.font.setBold(true);
}
}
}
}
super_type::paint(painter, itemStyle, index);
}
При выборе мышкой ок, отображение финальное - стандартым шрифтом.
Фигня какая-то. Ну пусть будет так.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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