7

QTableViewQAbstractModel を使用して作成された、ユーザーが編集可能なチェックボックスを実装したいと考えています。チェックされたチェックボックスとチェックされていないチェックボックスを割り当てることはできますが、編集可能にすることはできません。フラグが に設定されQItemIsUserCheckableます。

4

4 に答える 4

3

まず最初に。

QAbstractItemModel は、ツリー モデルを作成する場合にのみモデルに適していますが、他のほとんどの場合、QAbstractTableModel または QAbstractListModel を使用することをお勧めします。モデル タイプ (テーブルまたはリスト)。

これらのモデルに関するドキュメントは非常に詳細で、モデルを編集可能にするためにどの関数を実装する必要があるかを示しています。この簡単な説明では、テーブル モデルを使用します。主な機能は次のとおりです。

  • QVariant data(index, role) : 現在のインデックスとロールの QVariant 値を返します
  • bool setData(index, value, role) : 渡された値がインデックスに書き込まれたかどうかを返します
  • QItemFlags flags() : 渡されたインデックスの QItemFlags 値を返します

この場合、他のものは無視します。

すべての Qt ビューは同じように機能します。表示されると、モデルからのデータが読み込まれ、インデックスの flags() によって返される値に従って、要素が編集可能/選択可能になります。それらが編集されると、値は setData() 関数を介してモデルに渡されます。

欠けているように見えるのは、 flags() メソッドの Qt::ItemIsEditable フラグです。

于 2013-04-02T19:49:41.437 に答える
1

実装したいのは、カスタム デリゲートです。実際の実装の詳細については、QAbstractItemDelegateクラスを参照してください。

于 2013-04-02T16:10:32.623 に答える