2012-04-24 3 views
0

私はQComboboxを使用しています。QComboboxのすべての項目に3つのアイコンが表示されます。しかし、現在、QComboboxのすべてのアイテムは1つのアイコンしか表示しません!QComboboxを複数の欄でカスタマイズする方法

すべてのアイコンを動的に変更する必要があります。

答えて

1

新しいカスタムQAbstractItemDelegateを作成し、void QComboBox::setItemDelegate (QAbstractItemDelegate * delegate) apiを使用してQComboBoxに設定する必要があります。デリゲートで

、あなたは必要に応じて

virtual void paint (QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const = 0 

を実装する必要があります。

また、userDataのコンボボックスとは別のアイコンを提供するために、次のAPIを使用する必要があります。これはdeletegateのペイントメソッドでアイコンを取得して描画することができます。

void QComboBox::addItem (const QString & text, const QVariant & userData = QVariant()) 

概要:私は上記のように実装すると、アイコンがリストのみをクリックドロップダウンとして

が表示されます。通常の状況では、テキストのみが表示されます。したがって、通常の状況で3つのアイコンとテキストが表示される場合、サブクラスQComboboxの場合はQComboboxのpaintEventを、サブクラスQComboBoxのないQComboboxのpaintEventを捕捉する場合はeventFilterを使用して再実装する必要があります。 ありがとうございました。

+0

こんにちはクナル!あなたの応答に感謝します! – Anglejoy

+0

現在のところ、私の3つのアイコンはQComboboxのドロップダウンリストをクリックすると表示され、項目はテキストのみを表示します。私はクリックするのではなく、現在のアイテムにテキストと3つのアイコンを表示したい。 – Anglejoy

+0

あなたはドロップダウンリストに3つが表示されているが、通常の状況ではないことを意味するのですか? – Kunal

1

paintEventを再実装するか、3つのアイコンすべてに大きなアイコンイメージを使用します。

+0

はい!そんなにあなたの応答に感謝! – Anglejoy

+0

いつでも歓迎! – Jeka

関連する問題