0

Qt5を使用しています。これで、QTableViewを使用してデータベース テーブルからデータが取り込まれましたQSqlTableModel。で余分な列を追加しましたmodel->insertColumn(n);。マウスを使用して、この新しく追加された列のいくつかのセルにチェックマークを付けることができるようにしたいと思います。これは、終了後tableView、チェックマークが付いている行に対してさらに処理を行う必要があるためです...これを行う方法はありますか?助けてください。

model->setData(index, "...");悪いニュース:新しく追加された列のセルを除いて、テーブル内のすべてのセルを ( を使用して) 追加/変更できます...
なぜこれが起こっているのですか?

4

1 に答える 1

1

QSqlTableModel がデータベース内の対応するテーブルを変更している (または変更しようとしている) こと、およびそれが何らかの形で失敗している可能性があること。余分な列は、データベースからのデータに本当に対応していますか、それとも合成されていますか?

とにかく、2つの可能な解決策は

  1. 元の SQL モデルの前にあるプロキシ モデル
  2. SQL モデルをサブクラス化する

アイデアは、プロキシ/サブクラスを使用してデータを拡張し (余分な列のデータを合成することによって)、チェックされたステータスを処理することです。Qt::ItemIsCheckableセルを「チェック可能」とマークするには、モデルの実装から戻る必要がありますflags()。その後、ビューdata()Qt::CheckStateRole.

于 2015-06-11T12:52:41.520 に答える