QComboboxを使用していますが、QComboboxのすべてのアイテムに3つのアイコンを表示したいと思います。ただし、現在、QComboboxのすべてのアイテムに表示されるアイコンは1つだけです。
すべてのアイコンは動的に変更する必要があります。
paintEventを再実装するか、3つのアイコンすべてが表示された大きなアイコン画像を使用します。
新しいカスタムQAbstractItemDelegateを作成し、voidapiを使用してQComboBoxに設定する必要がありますQComboBox::setItemDelegate ( QAbstractItemDelegate * delegate )
。
デリゲートでは、実装する必要があります
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() )
概要:
上記のように実装すると、アイコンはドロップダウンリストをクリックしたときにのみ表示されます。通常の状況では、テキストは表示されるだけです。したがって、通常の状況で3つのアイコンとテキストを表示するには、サブクラスQComboboxの場合にQComboboxのpaintEventを再実装するか、eventFilterを使用してサブクラスQComboBoxなしでQComboboxのpaintEventをキャッチする必要があります。たくさんのご回答ありがとうございました!