У меня есть 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.
Я использую только собственный делегат, чтобы поместить значок оформления в верхнюю часть текста. Есть ли опция таблицы стилей, чтобы значок отображался сверху?
Я пропустил 4-й параметр функции QStyle :: drawControl «widget»:
style->drawControl(QStyle::CE_ItemViewItem,&opt,painter,widget);
Вот исходный код QStyledItemDelegate, метод рисования:
Других решений пока нет …