Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: joke от Июль 13, 2010, 13:59



Название: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: joke от Июль 13, 2010, 13:59
Здравствуйте.
Есть следующая задача: есть набор элементов (названия могут быть одинаковыми), есть текущий элемент.
Необходимо выделить элементы в соответствии с внутренним представлением.
Есть идея что это можно сделать выделяя шрифтом или цветом, пример выбор шрифта в OpenOffice.
А вот как? Подбросите пример или доку?


Название: Re: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: BRE от Июль 13, 2010, 14:03
Делегат прицепить.
void QComboBox::setItemDelegate ( QAbstractItemDelegate * delegate )


Название: Re: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: joke от Июль 13, 2010, 14:12
Ладушки, спрошу по другому.
Хочу если CriticalPOD().isIt(combo->itemData().toInt()) то данный itemText() отобразить как bold.
Смотрю в QAbstractItemDelegate и никак непойму куда этот bold засунуть.


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


Название: Re: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: joke от Июль 13, 2010, 14:23
Мобуть нашел: QStyleOptionComboBox, пример QStyleOption (manual)


Название: Re: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: BRE от Июль 13, 2010, 14:26
Мобуть нашел: QStyleOptionComboBox, пример QStyleOption (manual)
Вот эти классы и позволяют упростить процесс рисования своих элементов.


Название: Re: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: joke от Июль 13, 2010, 14:30
QStyledItemDelegate -> displayText???


Название: Re: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: joke от Июль 13, 2010, 14:33
Фигню сказал...


Название: Re: Отображение элементов QComboBox'а разными шрифтами.
Отправлено: joke от Июль 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);
}
При выборе мышкой ок, отображение финальное - стандартым шрифтом.
Фигня какая-то. Ну пусть будет так.