Название: Подскажите по QItemDelegate Отправлено: UVV от Август 29, 2007, 08:00 Использую QSqlRelationalTableModel и QTableView.
Нужно сделать делегата, который будет выделять все значения, кроме одного, в одном столбце красным цветом шрифта. Название: Re: Подскажите по QItemDelegate Отправлено: EhTemka от Август 29, 2007, 09:50 Код: void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, Можно как-нибуть так... Название: Re: Подскажите по QItemDelegate Отправлено: UVV от Август 29, 2007, 11:38 Нет!
Попробую объяснить подробнее. Есть столбец, скажем, под номером 5. Поля в этом столбце могут иметь значения: "Норма", "Плохо", "Средне" и т.п. Надо, что бы все, которые не "Норма" были красным цветом. У меня как раз с этой проверкой и загвоздка. Название: Re: Подскажите по QItemDelegate Отправлено: denka от Август 29, 2007, 11:54 А что тебе мешает получить это значение и проверить его в paint ? То есть если брать код который выше, то это будет что то такое:
Код: void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, Название: Re: Подскажите по QItemDelegate Отправлено: UVV от Август 30, 2007, 05:06 Спасибо, значение проверить получилось.
Но мне нужно не красный цвет фона, а красный цвет шрифта! Название: Re: Подскажите по QItemDelegate Отправлено: Lion от Август 30, 2007, 06:54 Спасибо, значение проверить получилось. Для этого не надо переписывать делегат юзай Qt::ForegroundRole = Qt::red или Но мне нужно не красный цвет фона, а красный цвет шрифта! Код: void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, Название: Re: Подскажите по QItemDelegate Отправлено: UVV от Август 30, 2007, 07:49 Для этого не надо переписывать делегат юзай Qt::ForegroundRole = Qt::red или А пример можно?Код: ... Название: Re: Подскажите по QItemDelegate Отправлено: EhTemka от Август 30, 2007, 17:09 Да, вроде есть. const QStyleOptionViewItem &option передается в паинт как константа, и в setBrush еще надо ColorGroup передовать
Попробуй так Код: if (index.column() == myColumn && index.data( Qt::DisplayRole ).toString() != tr("Норма") ) { либо можно в painter установить кисть painter->setBrush(...) Название: Re: Подскажите по QItemDelegate Отправлено: Lion от Август 30, 2007, 18:21 Для этого не надо переписывать делегат юзай Qt::ForegroundRole = Qt::red или А пример можно?Название: Re: Подскажите по QItemDelegate Отправлено: UVV от Август 31, 2007, 05:19 Да, вроде есть. const QStyleOptionViewItem &option передается в паинт как константа, и в setBrush еще надо ColorGroup передовать Попробуй так Код: if (index.column() == myColumn && index.data( Qt::DisplayRole ).toString() != tr("Норма") ) { либо можно в painter установить кисть painter->setBrush(...) Всем спасибо! Такой вариант мне подходит больше всего. |