0

我正在使用 QCombobox,我希望 QCombobox 中的每个项目都显示三个图标。但是目前,QCombobox 中的每一项都只显示一个图标!

每个图标都应该动态更改。

4

2 回答 2

2

您应该创建新的自定义 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!感谢大家的回复!

于 2012-04-25T03:48:18.450 回答
2

重新实现paintEvent,或者使用带有所有3个图标的大图标图像。

于 2012-04-24T10:29:06.557 回答