我正在使用QCombobox,我想在QCombobox中的每个项目显示三个图标。但目前,QCombobox中的每一项只显示一个图标!
每个图标都应该动态更改。
发布于 2012-04-25 11:48:18
您应该创建新的自定义QAbstractItemDelegate,并使用void QComboBox::setItemDelegate ( QAbstractItemDelegate * delegate )接口将其设置为QComboBox。
在委托中,您需要实现
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const = 0如你所愿。
您还需要使用以下接口为userData中的组合框提供不同的图标,您可以在deletegate的paint方法中使用这些图标来检索图标并绘制它。
void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() )摘要:
当我如上实现时,这些图标仅显示为单击下拉列表。在正常情况下,文本仅显示。因此,对于正常情况下的三个图标和文本显示,我们必须在QComboBox子类的情况下重新实现QCombobox的paintEvent,或者使用eventFilter捕获QCombobox的paintEvent而不使用QCombobox子类!感谢您的回复!
发布于 2012-04-24 18:29:07
重新实现paintEvent,或者使用包含所有3个图标的大图标图像。
https://stackoverflow.com/questions/10295950
复制相似问题