最後の列を常に編集モードで表示したい QTableView があります。(これは、ユーザーが常に値を変更できる QComboBox です。)
Qtのドキュメントで解決策を見たと思いますが、もう見つかりません。それを行う簡単な方法はありますか?
すべてのセルを使用してこの効果をアーカイブできると思いますがopenPersistentEditor()
、より良い方法を探しています。(列全体に対して 1 回だけ指定するようなものです。)
最後の列を常に編集モードで表示したい QTableView があります。(これは、ユーザーが常に値を変更できる QComboBox です。)
Qtのドキュメントで解決策を見たと思いますが、もう見つかりません。それを行う簡単な方法はありますか?
すべてのセルを使用してこの効果をアーカイブできると思いますがopenPersistentEditor()
、より良い方法を探しています。(列全体に対して 1 回だけ指定するようなものです。)
自動編集動作を取得する1つの方法は、QAbstractItemView :: AllEditTriggers値を使用してビューのsetEditTriggers()関数を呼び出すことです。
特定の列の内容を特定の方法で表示するには、QAbstractItemView :: setItemDelegateForColumn()を確認してください。これにより、カスタムデリゲートを必要とするアイテムに対してのみカスタムデリゲートを指定できます。ただし、それぞれのエディターウィジェットは自動的に作成されません(原則として数千の場合があります)が、デリゲートを使用して、エディターウィジェットのように見えるように各アイテムをレンダリングできます。
次の 2 つの可能性があります。
を使用しsetIndexWidget
ていますが、Trolltech は次のように書いています。
この関数は、データ項目に対応する可視領域内に静的コンテンツを表示するためにのみ使用してください。カスタム動的コンテンツを表示したり、カスタム エディター ウィジェットを実装したい場合は、代わりに QItemDelegate をサブクラス化してください。
(そして、Model/View パターンを壊します…)
またはデリゲートのpaint
メソッドを使用します。ただし、ここでは、有効化/無効化された要素などすべてを自分で実装する必要があります。
QAbstractItemModel :: flags仮想関数は、項目が編集可能かどうかをテストするために呼び出されます ( Qt::ItemIsEditable を参照してください)。モデル/ビュー プログラミングドキュメントのモデルを編集可能にするをご覧ください。