問題タブ [qabstractitemmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
7437 参照

qt - QAbstractTableModel と QItemDelegate を 1 つの作業ソースに結合するには?

QTableViewUIファイルに定義があります。これが図です:

代替テキスト

デリゲートを処理するウィジェット (赤い配列が指している場所) で月の変更を行いたいのQComboBoxですが、私にとっては、カスタム デリゲートとモデルにとっては複雑すぎる問題であり、何が問題なのかわかりません。

問題: 私の意見では、カスタムのシンプルなウィジェットを QTableViewと組み合わせることができないため、 ではQAbstractTableModel動作しません。え?QItemDelegateComboBoxDelegate

ここに私が持っているものがあります:

私のカスタム デリゲート ヘッダー/ソース データ:

モデルデータ:

その後、次のように init デリゲートを作成しました。

PS: 長い出力で申し訳ありませんが、すべてのソースがここに表示されれば、より良いものになると思います。

ありがとう!


  1. 追加した:
0 投票する
3 に答える
15853 参照

c++ - QComboboxのモデルの使用方法

ののQCombobox として使用したい 。だから私は 私のオブジェクトを保持するために使用する必要があります。オブジェクトをQComboboxに保持するにはどうすればよいですか。(MVCパターンに従って設計されているため、モデルにデータを保持する必要があると思います...)助けていただければ幸いです。ComboboxSwingJavaModelQCombobox

0 投票する
1 に答える
5350 参照

qt - pyqt: QAbstractDataModel と QTreeView の挿入行を理解しようとしています

QAbstractItemModel を使用してツリー ビューを管理するために PyQt を使用しています。これまでのところ、データの読み込み、展開と折りたたみ、値の編集ができるように実装できました。

ただし、私ができないことの 1 つは、行の挿入と削除に頭を悩ませることです。

私がやろうとしていることの短いバージョン:

ユーザーが特定のセルを編集するとき、実際にオブジェクト階層内の基礎となる項目を削除して、別の項目に置き換える必要があります。これをモデルの setData メソッドに実装します。私は自分が何をしているのか完全には理解していないので、セグメンテーション違反になるように設定したようです。

基本的に、データ モデルが QModelIndex とどのように相互作用するかをよりよく理解する必要があるだけですが、ドキュメントを読んだり読み直したりしても、私は啓発されないようです。任意のヘルプ (または適切なチュートリアルへのリンク (必ずしも必要ではありませんが、Python であることが望ましい) も大歓迎です)。

ここに私が使用しているコードのサンプルがあります:

0 投票する
1 に答える
24057 参照

c++ - QAbstractItemModel と QTreeView

QtreeView で独自のデータ モデルを表示する作業例 (c++) が必要です。

0 投票する
2 に答える
7321 参照

c++ - QSqlTableModel の列名を取得するにはどうすればよいですか?

QString QSqlTableModel::getColumnName(int col) のようなものが欲しいです。

0 投票する
1 に答える
1027 参照

c++ - Qtデリゲートエディタを「スティッキー」にする方法

アプリケーションを自家製のUIからQtに移行しています。最も重要なコントロールの1つは、プロパティパネルです。このパネルは、リフレクションAPIのインターフェイスを実装するオブジェクトを取得し、すべてのプロパティのエディターを含むダイアログボックスを表示します。

プロパティシステムの実装を作成QAbstractItemModelし、内のさまざまなタイプのハンドラーをいくつか作成しましたQTableViewQItemDelegateプロパティのエディタを作成するためのも作成しました。

問題は、厳密にポップアップではなく、編集者にぶらぶらしてもらいたいということです。これは、プロパティのレンダリングを処理し、操作に必要なクリック数を減らし、カラーボタンなどの他の何かがフォーカスを取得してもすぐに消えないようにするためです-エディター(色の変更をリッスンするスロットがあります)が消えますカラーピッカーダイアログが表示されるとすぐに、これは何も変更をリッスンしていないことを意味します。

エディターを永続化するためのオプションが見つかりません。私はここで間違った木を吠えていますか、それともこれを行うためのより適切な方法がありますか?私は「Qt」の方法で物事をやろうとしましたが、すでにレンガの壁にぶつかっています。

ありがとう、

0 投票する
1 に答える
835 参照

c++ - QAbstractModelItem のプロキシを作成する

非常に重いデータセットの視覚化を可能にする Qt アプリケーションを作成しています。

だから、私はSourceDataModelクラスを持っており、それから継承するQAbstractItemModelと正しく動作しているようです (現在、私は QTableView/QTreeView でのみ表示しますが、後でいくつかのカスタム ビューを作成します)。

さて、このデータをフィルタリングできるようにしたいと思います。

  1. 異なるデータ解像度を持つことができる (つまり、2 つのデータ項目のうち 1 つのデータ項目のみを公開する)

  2. データにいくつかのフィルターを適用できる (つまり、UNIX タイムスタンプを dd/MM/yyyy hh:mm:ss として表示する)

そこでProxySourceDataModel、my から継承してSourceDataModel1 つのインスタンスを格納し、基本的にすべてをインスタンスに委譲するクラスの作成を開始しました。このことからProxySourceDataModel、 で使用するとデータが表示されないことに気付きましたQTableView。いくつかの調査の結果、基になる からシグナルとスロットを転送する必要があったためだと思われますSourceDataModel。問題ありません。

しかし、まだ 2 つの問題が残っており、それらを処理する方法がわかりません。

  1. ビューでデータを選択できません。SourceDataModel直接使用しても問題ありません。しかし、を使用すると、ProxySourceDataModel何も選択できません。

  2. データはまったくフィルタリングされません。で data() をオーバーロードProxySourceDataModelし、他のすべての呼び出しを基になる に転送しますSourceDataModel。それでも、SourceDataModel::data()呼び出されるだけです。

ここに私がやっていることを説明するためのいくつかのコードがあります:

ヘルプやアドバイスは大歓迎です。読んでくれてありがとう!

- - - - - - - - - - 編集 - - - - - - - - - - - -

見つけた!

問題は、ビューがQAbstractItemModel::data()そのモデルから使用するのではなく、そのアイテムを呼び出し、そのアイテムの基になるモデルの をQModelIndex::data()呼び出すことでした。QAbstractItemModel::data()そして、私のプロキシは基になるモデルからモデル インデックスを返したので、常に!SourceDataModel::data()の代わりに が呼び出されたのはそのためです。ProxySourceDataModel()

ローカル インデックスを返すように再実装したところProxySourceDataModel::index()、魅力的に機能します。詳細については、QT ではモデルの連鎖が期待どおりに機能しないを参照してください。

ありがとう!

0 投票する
1 に答える
5971 参照

c++ - QAbstractTableModel をデータ ストアと同期させるにはどうすればよいですか?

私のアプリには、アイテムのリストを保持するためのクラスがあります。

アイテム操作関数 (追加、更新、削除) は、完了時に対応するシグナルを発行します (アイテムの追加、変更、削除)。そのようなデータベースのリストと、その内容を表示するための QTableView があります。また、カスタムの QAbstractTableModel 派生モデル クラスのオブジェクトが 1 つあります。これは、必要に応じて別のデータベースを指す (および表示する) ようにすることができます。

モデルに現在のデータベースへの変更を反映させることに問題があります。以前は、データベースで何かが変更されるたびに (データベースから DatabaseModel へのシグナルによってトリガーされて) モデルのリセットを発行することで動作させていましたが、それはやり過ぎだと判断しました。データベースとモデルを正しく接続する方法がわかりません。

データベース シグナルをモデルに接続し、モデルが dataChanged() を発行するようにしても、データベース内のアイテム数 (したがってモデルの行) が変化するため、機能しません。QAbstractTableModel には rowsInserted() および rowsRemoved() と呼ばれるシグナルがありますが、カスタム クラスでは使用できないとドキュメントに記載されています。removeRows() および insertRows() と呼ばれる再実装する仮想関数がありますが、ドキュメントでは、それらの内部で begin(Remove|Insert)Rows() および end(Remove|Insert)Rows() を呼び出す必要があると書かれており、2 つの問題が発生します。 :


  1. begin...Rows() にはQModelIndex 'parent' パラメータが必要ですが、何を使用すればよいかわかりません 。これは QAbstractTreeModel によってツリー内の親ノードを識別するために使用され、明らかにテーブル モデルには必要ありません。
  2. ドキュメントには、基礎となるデータストアを変更するにこれらの関数を呼び出す必要があると書かれています

モデルをデータベースと同期させるにはどうすればよいですか? ありがとう!

0 投票する
1 に答える
2177 参照

sql - QTreeView と QSqlQueryModel -- SQL データベースから必要に応じて子をロードする

次の問題があります。

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

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

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

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

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

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

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

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

0 投票する
2 に答える
1229 参照

qt - QTableView列にQAbstractListModelアイテムを表示する

私はQtをいじっていて、小さな問題に遭遇しました。

写真の一覧をアイコンの表として表示したい。現在、私はQAbstractTableModel をサブクラス化し、それを QTableViewサブクラスにプラグインすることでこれを行っています。

私の意見では、これはコード、モデル、およびビューを過度に複雑にします (特にアイテムを編集/追加しようとする場合)。モデルをQAbstractListModelとして実装しようとすると、項目がテーブルの行として表示されます。

代わりに QTableView にアイテムを列として表示させる方法はありますか?
編集:アイテムが左から右に 1 行でレンダリングされ、新しい行にラップされるようにします。

それとも、どのような場合でもテーブル ビューにテーブル モデルを使用し、問題を回避することが望ましいですか?

私は Qt Jambi に基づいて Qt の C# バインディングを使用していることに言及する価値があります。