Название: QStyle::CE_ItemViewItem Отправлено: jasf от Ноябрь 09, 2009, 00:27 Здравствуйте. :) Подскажите, пожалуйста, как отрисовать фрейм QStyle::CE_ItemViewItem. Пытался по разному.. вот к примеру:
Код: QStyleOptionViewItemV4 option; но ничего, кроме пустоты, отрисовать не получилось (точнее - отрисовываются некие точечки высотой в 10 пикселей). а хочется отрисовать фрейм (серый под "test"), который видно на скрине. Заранее спасибо за советы. Название: Re: QStyle::CE_ItemViewItem Отправлено: Rcus от Ноябрь 09, 2009, 07:41 QStyle::PE_PanelItemViewItem
Название: Re: QStyle::CE_ItemViewItem Отправлено: jasf от Ноябрь 09, 2009, 12:08 Код: void QMyLabel::paintEvent(QPaintEvent* e) вообще пусто (нет даже точек) Название: Re: QStyle::CE_ItemViewItem Отправлено: Rcus от Ноябрь 09, 2009, 12:48 Нет времени попробовать, но мне кажется что вышеприведенный код не инициализирует некоторые члены класса QStyleOptionViewItemV4 (в частности ::backgroundBrush), поэтому ничего и не рисуется
Название: Re: QStyle::CE_ItemViewItem Отправлено: jasf от Ноябрь 09, 2009, 14:05 Ну да. dirty hack ввиде создания экземпляра QListWidget и получения из него viewOptions() позволяет нормально отрисовываться. видимо пока так и оставлю :)
Название: Re: QStyle::CE_ItemViewItem Отправлено: jasf от Ноябрь 10, 2009, 02:18 промучался весь вечер, но так ничего вразумительного и не реализовал. То, что описал в предыдущем посте - это на Windows Xp было просто выделение(видимо некий стандартный стиль). Под вистой по прежнему не работает.
Название: Re: QStyle::CE_ItemViewItem Отправлено: Rcus от Ноябрь 10, 2009, 04:47 В Qt нет магии :) Вот как выглядит кусок $QTDIR/src/gui/styles/qwindowsvistastyle.cpp
Код
Название: Re: QStyle::CE_ItemViewItem Отправлено: jasf от Ноябрь 10, 2009, 11:05 да вчера я и с этим кодом ознакомился :) получилось отрисовать фрейм при помощи передачи в последний параметр указателя на QListWidget. Но фрейм получился не полупрозрачным (хоть и vista style). Когда разберусь, в чём же дело - отпишусь.
P.S. а ведь заявлено, что в Qt 4.x всё реализовано так, что бы можно было отрисовывать содержимое одного виджета в другие без надобности создания первого. А тут такие вот ifы проверки на типизацию виджета. Типа если ты не от QAbstractItemView, тогда ты не из нашей песочницы и соответственно неимеешь права отрисовывать элементы Itemов. |