我正在使用QCombobox,我希望QCombobox中的每个项目都显示三个图标。但目前,QCombobox中的每个项目只显示一个图标!
每个图标都应动态更改。
答案 0 :(得分:1)
重新实现paintEvent,或使用带有全部3个图标的大图标图像。
答案 1 :(得分:1)
您应该使用void QComboBox::setItemDelegate ( QAbstractItemDelegate * delegate )
api创建新的自定义QAbstractItemDelegate并将其设置为QComboBox。
在委托中,您需要实施
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const = 0
根据您的要求。
您还需要使用以下API为userData中的组合框提供不同的图标,您可以在deletegate的paint方法中使用它来检索图标并绘制它。
void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() )
要点:
当我按上述方式实施时,只有图标显示为点击下拉列表。在正常情况下,文本只显示。因此,对于正常情况下的三个图标和文本显示我们必须重新实现QCombobox的paintEvent以防子类QCombobox或使用eventFilter来捕获QCombobox的paintEvent而不使用子类QComboBox! 感谢您的回复!