我有一个带有自定义委托的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 我只使用自定义委托将装饰图标放在文本的顶部,是否有样式表选项强制图标显示在顶部?
答案 0 :(得分:1)
我错过了QStyle :: drawControl函数“widget”的第4个参数:
style->drawControl(QStyle::CE_ItemViewItem,&opt,painter,widget);
这里,QStyledItemDelegate源代码,paint方法: