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