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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Subclassing QItemDelegate  (Прочитано 2978 раз)
Rain
Гость
« : Март 15, 2009, 14:46 »

Доброго дня,

Нужно кастомизировать отрисовку ячейки QTableView. Для этого делаю наследника от QItemDelegate и переопределяю метод drawDisplay.

И все вроде работает, но не совсем понятно откуда брать следующую информацию:

1. Состояние выбран/не выбран для обрабатываемой ячейки (выбранные прорисовываются с синим фоном). Думал, что эту информацию можно получить из параметра QStyleOptionViewItem& option, но ничего подходящего не нашел:(
2. Как получить информацию о системном стиле? Палитра, размер шрифта?

Заранее спасибо,
Записан
Rcus
Гость
« Ответ #1 : Март 15, 2009, 14:58 »

В доках рекомендуют наследоваться от QStyledItemDelegate и переопределять метод paint (+по необходимости sizeHint).
Чтоже до вопросов:
1. option.state
2. палитру нужно брать из option.palette (системная не подходит, потому что может устанавливаться отдельно для каждого виджета) шрифт option.font.

Если нужно взять информацию из стиля виджета, например для отрисовки рамки фокуса, то можно сделать такой финт (в доках нет описания QStyleOptionViewItemV3::widget, единственное найденное упоминание это http://doc.trolltech.com/4.5/qstyleoptionviewitemv3-members.html):
Код
C++ (Qt)
 
   const QStyleOptionViewItemV3 *optionV3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option);
   QStyle *style = optionV3 ? optionV3->widget->style() : qApp->style();
   style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter, widget);
 
ADD: Мда, после редактирования какой-то бред получился Улыбающийся
« Последнее редактирование: Март 15, 2009, 22:32 от Rcus » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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