問題タブ [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 投票する
0 に答える
959 参照

qt - QTreeView & QAbstractItemModel & insertRow 仕様の理解

editabletreemodel の例とQTreeView & QAbstractItemModel & insertRowのアドバイスに従って QTreeView & QAbstractItemModel を実装しました。

それはうまくいきます。しかし、私には理解できない違いがあります。

子行を挿入するときにアプリケーションを適切に動作させるには、layoutChanged() を発行する必要がありました。そうしなければならなかった。私が発行しない場合 - 子の挿入はうまくいきません: 新しい子がモデルに正しく表示され、(保存すると) 正しく保存されますが、ビューには表示されません。

editabletreemodel の例には「emit layoutChanged()」が含まれておらず、子を挿入しても問題なく動作します。

QAbstractItemModel 兄弟クラスの insertRows メソッドは次のとおりです。

editabletreeview の例とほとんど同じですが、唯一の違いはエミットです。

なぜですか?

editabletreeviewはこれを行わないのに、正確にlayoutChanged()を発行する必要がある理由を理解したいです。誰かがこの点を説明していただければ幸いです。

なぜ発するのか理解する必要はありません。なぜ発行する必要があるのか​​ 、editabletreeviewがそれを必要としないのかを理解する必要があります。

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

c++ - QAbstractItemModel と QSortFilterProxyModel の奇妙な相互作用

この QAbstractItemModel と QSortFilterProxyModel の相互作用の何が問題になっていますか? 画面の左側で QAbstractItemModel の実装を接続し、右側で QSortFilterProxyModel を実行しました。

UPD:コードをアップロードします: git@bitbucket.org:h0x0d9/myfilterproxymodel.git

コード:

ヘッダー:

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

qt - QHeaderView のセクションのテキストをファイルに書き込むにはどうすればよいですか?

QTableViewMS Excel で表示できるように、すべてのデータを取り込み、.csv ファイルに書き込むエクスポーターを作成しようとしています。

水平ヘッダーのセクションからテキストを読み取る方法が見つからないようです。みたいなメソッドがないようQHeaderView::sectionsで、QHeaderViewのセクションにアクセスできません。確かQHeaderView::countにどこかのコンテナに保存されていると思います。

のセクションのテキストを取得する方法はありQHeaderViewますか?

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

c++ - QAbstractItemView の変更を通知する最良の方法は何ですか?

UIのいくつかの基準に基づいて定期的に変更されたモデル(QAbstractItemModelから派生)を持つQListViewがあります。現在のモデルが更新されたとき、またはモデルが変更されたときに、新しい行が追加/削除されたとビュー自体が認識したときに通知を受け取りたいです。setIndexWidget を呼び出して特定の列の下にカスタム コントロールを追加するには、この通知が必要です。ウィジェットの人口は高価であるため、 setIndexWidget を繰り返し呼び出すことは避けたいと思います。したがって、1 行に 1 回が理想的です。

私はrowsInserted/rowsAboutToBeRemovedとdataChangedを試しましたが、ビューに設定されているモデルにすでにアイテムが含まれている場合、それらは呼び出されません。

どんな考えでも大歓迎です。

0 投票する
3 に答える
1899 参照

c++ - QTreeView: QModelIndex と基になるデータ間のマッピングを維持する

QTreeWidgetからへの移行に問題がありますQtreeView。明白で些細なことはQTreeWidget、ビューでは不可能に思えます。具体的には、ツリービューを含むメイン ウィンドウがあります。TreeView は、私が実装したモデルを使用しますが、直接QSortFilterProxyModelではなく、ツリーのモデルとして設定されます。ここで、ユーザーがツリー内の項目をアクティブにすると、メイン ウィンドウがシグナルを受信しますitemActivated(QModelIndex item)。基になるデータのどのアイテムがアクティブ化されたかをどのように確認できますか? データはベクターなので、TreeWidget を使用すると、アイテムのベクター インデックスを に格納できますが、QTreeWidgetItemAPIさえQModelIndexありません。setData

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

qt - QTableView:プログラムで編集不可能なセルを編集する方法は?

model->setData() メソッド呼び出しを使用してこれを行うにはどうすればよいですか?

QStandardItemModel から「MyStandardItemModel」というクラスを派生させました。保護された仮想フラグ メソッドをオーバーライドして、3 番目と 4 番目の列を編集不可にしました。これはそれがどのようになるかです:

これを行うと、3 列目と 4 列目のセルを編集できなくなります。

ここで、これらのセルをダブルクリックすると、ポップアップ ダイアログが表示されるようにします。そのダイアログの編集可能なフィールドでいくつかのデータを変更し、それをコード内の編集不可能なセルにコピーして戻します。

QTreeView の doubleclick() ハンドラーを作成し、一部のデータをセルにコピーして、編集不可能なセルにデータをコピーできるかどうかを確認しようとしました。

この操作は失敗し、データは編集不可のセルに書き込まれません。

ここでは、ダブルクリック ハンドラーを見つけることができます。

setData(..) 操作は、セルに既に書き込まれているデータをクリアしていますが、文字列 "AA" は書き込まれていません。コード内の編集不可能なセルにデータをコピーする方法を提案してください。

ここに画像の説明を入力