0

次の問題があります。

SQL テーブルから動的にデータをロードする QTreeView のモデルを実装しようとしています。

表は次のようになります。

CREATE TABLE xcmObjects
(
   id                       INT               AUTO_INCREMENT PRIMARY KEY NOT NULL,
   id_parent                INT               DEFAULT 0 NOT NULL ,
   title                    TEXT

);

id_parent には親レコードの ID が含まれているため、構造を形成します。

必要な場合にのみ、モデルがこのテーブルからデータをロードするようにしたいと考えています。言い換えれば、完全な構造をメモリにロードしたくありません。代わりに、ユーザーによって開かれたノードのみの子を読み取りたくありません。

QSqlQueryModel と QSqlTableModel は、フラット テーブルでのみ機能するようです。

この問題の解決策の 1 つは、カスタム QAbastractItemModel クラスを実装し、開いているノード (トップレベルの非表示の親を含む) ごとに個別の QSqlQueryModel インスタンスをストア内に実装することだと思います。そして、各メソッドを書き直し、リクエストを適切なモデルに転送します。

たぶん、もっと簡単な解決策がありますか?:-)

手伝ってくれてありがとう。

4

1 に答える 1

1

これを行うために QAbstractItemModel のサブクラスを処理するのはそれほど難しくないと思います。最上位は、parent_id が 0 のテーブル内のすべての項目になります。各項目の ID を QModelIndex クラスの内部データとして保存すると、さまざまな関数に渡された親インデックスを使用して、データの新しいクエリを作成できます。 .

于 2011-05-24T14:32:25.477 に答える