2017-12-16 9 views
0

私はカスタムモデルを作成し、ビュー(ツリー)とデリゲートを行いました。ツリーのいくつかのセルはコンボボックスです。コンボボックスは、ユーザーが選択したときに期待通りに機能します(カスタムcreateEditor、setEditorData、setModelDataデリゲートメソッド)。私が持っている問題は、セルが選択されている場合にのみ下向き矢印が表示されることです。下向きの矢印が常に表示されるようにします。カスタムツリービューでQComboboxの下向き矢印を表示

どの方法がコントロールの下矢印の表示であるか分かりません。それはモデルデータ(おそらく装飾ロール)から来るのか、それともデリゲートのペイントメソッドなのでしょうか。私はスタイルシートを使用していません。

更新:

私はhere後のことでした解決策が見つかりました。基本的には私のカスタムデリゲートのペイントメソッドで次のように終わった。

QStyleOptionComboBox comboBoxOption; 
    comboBoxOption.rect = option.rect; 
    comboBoxOption.state = option.state; 
    comboBoxOption.state |= QStyle::State_Enabled; 
    comboBoxOption.editable = false; 
    comboBoxOption.currentText = index.data(Qt::DisplayRole).toString(); 

    QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &comboBoxOption, painter); 
    QApplication::style()->drawControl(QStyle::CE_ComboBoxLabel, &comboBoxOption, painter); 
+2

コードを投稿してください。 [mcve]の作成方法を参照してください。 –

答えて

0

QTreeItemViewが自分のアイテムを表示するとき。それは、ショーのコンテンツのためのQStyledItemDelegateを使用しています。セルを編集すると、実際のQComboboxウィジェットが作成されます。 したがって、アイテムの編集と表示にはさまざまなアプローチがあります。 QStyledItemDelegate :: paintロジックを変更して、セルが表示(ペイント)しているときに追加の装飾を表示する必要があります。 QStyledItemDelegateの子を作成し、独自のpaint()メソッドを定義します。 これは初めてのことではありません。しかし、その真の方法は、 "矢印"を細胞に実装することです。

関連する問題