問題タブ [qmodelindex]
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.
c++ - QTreeViewでQModelIndexの(視覚的な)位置を見つける簡単な方法
のノードの物理的な位置を計算することに興味があり、QTreeView
これを行う方法を見つけることができません(自分で計算する以外は、の堅牢性を考えると面倒でエラーが発生しやすくなりますQTreeView
)。
に関連付けられたデータの描画位置を見つける標準的な方法はありますか(位置をにマップするQModelIndex
方法に似ています)?indexAt()
QModelIndex
qt - QTableView: QModelIndex を正しく作成するにはどうすればよいですか?
次のような特定のセルで編集モードに入ろうとしています:
私のモデルは次のようなインデックスを作成します:
デバッグ出力は次のようになります。
setCurrentIndex()
機能していないように見えるため、インデックスが何らかの形で無効であると確信しています。
qt - 単一のQModelIndexの更新を停止します
時間の経過とともに変化するデータを含むQTreeViewがあり、dataChangedシグナルがQAbstractItemModelで毎秒発行されます。QTreeViewのアイテムも編集できますが、特定のアイテムのエディターを開くと、編集中にエディター文字列が更新されるため、非常に煩わしいです。エディターが新しい値で更新されないようにする方法はありますか?
c++ - QSqlTableModelを使用して、特定の複合主キーのQModelIndexを見つけるにはどうすればよいですか?
私はこのテーブルを持っています:
QModelIndex
たとえば、特定の複合主キーを見つけるにはどうすればよいですか。
c++ - データベースの検索に使用される別の QSqlQuery から QModelIndex を取得する方法 (見つかったアイテムを選択するために必要)
QSqlQueryModel を扱うときに問題があります。データベースでいくつかのアイテムを検索し、QModelIndex を必要とする QItemSelectionModel を使用して QTableView でそれらを選択したいと考えています。
私が理解していないのは、モデル/ビュー アーキテクチャに対応する QModelIndex を取得するために検索する方法です。ビューに表示されるアイテムが台無しになるため、モデル自体を使用することはできません。したがって、QSqlQuery または追加の QSqlQueryModel がオプションになる可能性がありますが、結果インデックス (.at()?) からモデル/ビュー システムに適合する QModelIndex に変換するにはどうすればよいでしょうか...
前もって感謝します!
qt - 元の QSqlQueryModel を変更せずに、SELECT クエリ (QSqlQuery) で見つかった行の QModelIndex を取得する方法
すでに質問しましたが、誤解されていたので、問題を正確に説明しようとします。
QSqlQueryModel
SQLite データベースからのデータを表示するために を使用していますQTableView
。
ここで、「検索/検索/置換」ダイアログを実装したいので、追加で作成された でデータベースを検索しQSqlQuery
、レコードを見つけたとしましょう。
QSqlQuery
では、extra のこの見つかったレコードからモデル/ビュー アーキテクチャに移動するにはどうすればよいでしょうか?
問題は、見つかったレコードを強調表示したいのでQItemSelectionModel
、特定の をロードする必要があることQModelIndex
です。
しかし、これを行う方法がわかりません。おそらく私の計画は不可能であり、データベース モデルでテキストを検索し、QTableView
.
QSqlQuery
、QSqlQueryModel
、のドキュメントは既に知っているQModelIndex
ので、これらのページだけを参照しないでください。あまり役に立ちません。
ありがとう!
PS: まだ回答されていない関連する質問もあります。
qt - QModelIndex を新しい行に関連付ける方法は?
QAbstractListModel
データを処理するために絶対に必要なポインターをモデル インデックスに含む を作成しました。次のようにデータを追加します。
への引数が、新しい行の実際のモデル インデックスではなく、新しい行の親beginInsertRows
モデル インデックスを要求していることに気付いたのは、後になってからです。
したがって、現時点では、Qt はQModelIndex
、この特定の行に関連付ける を提供する方法を私に与えていません。この新しい行に独自のモデル インデックスを作成するにはどうすればよいですか?
qt - QModelIndexクロススレッドキュー接続を渡す
これは関数シグネチャです。そして私はそれを呼んでいますQtConcurrent::run
アーキテクチャは非常に単純です。クエリによって返される予想行数は既知です。クエリは並行して実行され、各レコードフェッチで行が追加され table: WMI::WMITable*
WMI::WMITable
ます。これはSimple QObject TableDataStructureです。それは放出rowsAboutToBeInserted(QModelIndex, int, int)
しrowsInserted(QModelIndex, int, int)
、行を追加すると。
一方ProgressIndicator
、メインスレッドでインスタンス化され、table
はそのに渡されますctor
。からまでの予想される行の総数を取得しWMI::WMIQuery::wmiquery()
ますProgressIndicator::setRecordCount(quint64 count)
。rowAdded()
それはいくつかの簡単な数学をすることによって100から進歩を放出するスロットを持っています。そのctorで接続します
私が思うこと。別のWMI::WMIQuery::wmiquery()
スレッド(上QThreadPool
)で実行しているため、この接続はクロススレッドキュー接続です。私は正しいですか?
実行時に次のエラーが発生します
QObject :: connect:タイプ'QModelIndex'の引数をキューに入れることができません
('QModelIndex'がqRegisterMetaType()を使用して登録されていることを確認してください)。
私は何をすべきか ?私SLOT(rowAdded())
は3つの引数を必要としないので、次のSIGNAL(rowsInserted(QModelIndex,int,int))
ような別の信号を作成rowInserted()
し、放出するたびにそれを放出し、代わりにこれをこの結合にrowsInserted(QModelIndex,int,int)
使用する必要がありますSIGNAL
rowsInserted(QModelIndex,int,int)
テーブルのデータ構造のように、なぜモデルのような信号を使用しているのかと疑問に思われるかもしれません。このテーブルに接続されているモデルもあります。これも行ごとに更新されます。しかし、私はそれがこの点で重要ではないと思います。
c++ - QTreeViewでQModelIndexの表示されている行を見つける簡単な方法
特定の「視覚的な行」を取得する方法はありQModelIndex
ますか?
一部のノードが展開されているツリーと展開されていないツリーがあるとします。たとえば、部分的に展開されたツリーを取得し、最後のアイテムをクリックします。
私がクリックしたアイテムがプログラムで5行目にあることを知りたいです。QModelIndex
ここに階層があるため、の行と列は役に立ちません。
python - QModelIndexからデータを取得すると、無限のループが発生します
__getitem__
とを実装するクラスで問題が発生してい__setitem__
ます。
このクラスのインスタンスは、のデータバックエンドですQAbstractListModel
。モデルの外部からオブジェクトにアクセスできるようになるとdata(index)
、モデルの実装でこれらのインスタンスを返します。role==Qt.UserRole
これを実行したいシナリオの1つはQListView
、データを表示するためにモデルを使用するで、ユーザーがアイテムをクリックしたときです。__getattr__
問題は、ユーザーがクリックしたインデックスからデータを取得しようとするとすぐに、プログラムが無限ループ(内)で実行を開始することです。
以下は、説明されている動作を再現する完全なコピー/貼り付け可能なコードフラグメントです。index.data(Qt.UserRole)
プログラムはの行でループしますtestfunc
。
どこかでポイントが欠落していますか、それともPySideのバグに遭遇しましたか?