Таблица стилей QListView не работает с делегатом

У меня есть QListView с пользовательским делегатом

Пользовательский метод рисования делегата:

QStyleOptionViewItemV4 opt = option;

initStyleOption(&opt,index);

opt.decorationSize       = QSize(deco_size,deco_size);
opt.decorationAlignment |= Qt::AlignCenter;
opt.displayAlignment    |= Qt::AlignCenter;
opt.decorationPosition   = QStyleOptionViewItem::Top;
opt.font.setBold(true);

const QWidget *widget = opt.widget;

QStyle *style = widget ? widget->style() : QApplication::style();

style->drawControl(QStyle::CE_ItemViewItem,&opt,painter);

Моя проблема в том, что если я установлю таблицу стилей для моего QListView :: item
например.:

#lv::item:selected:active  { background: red; }

это не сработает!

Если я использую внутренний, ни один пользовательский делегат все в порядке.

2.
Я использую только собственный делегат, чтобы поместить значок оформления в верхнюю часть текста. Есть ли опция таблицы стилей, чтобы значок отображался сверху?

1

Решение

Я пропустил 4-й параметр функции QStyle :: drawControl «widget»:

style->drawControl(QStyle::CE_ItemViewItem,&opt,painter,widget);

Вот исходный код QStyledItemDelegate, метод рисования:

https://qt.gitorious.org/qt/webkit/source/435bbd4be73768f617e4a4083a345d1d8d62daa3:src/gui/itemviews/qstyleditemdelegate.cpp#L444

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]