0

SqlQueryModel によって供給される SortFilterProxyModel によって供給される TreeView があります。

ダブルクリック イベントを追加して、選択した行のデータが編集ダイアログに読み込まれ、編集できるようにします。

しかし、ロードされる「ランダムな」行だけが得られます.TreeViewの現在のインデックスが間違っているようです。私の推測では、SortFilterProxyModel がめちゃくちゃになっていると思いますが、適切なインデックスを取得する方法についての手がかりがありません。

これが私のモデルの設定方法です:

proxyModel = new SortFilterProxyModel();

treeView = new QTreeView();
treeView->setModel(proxyModel);

sqlModel = new QSqlQueryModel(this);
proxyModel->setSourceModel(sqlModel);

そして、これは間違った行を取得する私のコードです:

QSqlRecord product = sqlModel->record(treeView->currentIndex().row());

私は QT の初心者ですが、ネット上のあらゆる場所を調べても答えが見つからなかったので、ここの誰かが私を助けてくれることを願っています! :D

4

1 に答える 1

1

彼らが私にくれた答えを別のウェブに残します:

プロキシ モデルのソート/フィルタ側のモデル インデックスであるビューの currentIndex() を取得し、プロキシ モデルの QSortFilterProxyModel::mapToSource() 関数を使用して、ソース モデルの対応するモデル インデックスを取得する必要があります。次に、そのインデックス (有効な場合) を使用して、SQL モデルに直接対処できます。

于 2013-05-03T02:31:56.567 に答える