QAbstractTableModel と QAbstractItemModel をサブクラス化したカスタム モデルを使用して Qtableview を動作させています。
私はQlineeditを持っています.onclickedはビューをフィルタリングします:
// model.cpp setFilter(QString strFilter) 関数はインターン QList を検索し (この Qlist は実際にはモデルに関連付けられています)、一致するものが見つかった場合: m_filterSet.insert(i);
これはすべてうまくいきます。問題は、テーブルビューのCRUD操作(行の挿入、行の削除..)があり、これもうまく機能することです! しかし、フィルター処理されたセットから行を選択するとき、フィルター処理されたセット ( QSet ) からこの選択された行が QList のどこにあるかを正確に知る必要があります。
ui.myView->selectionModel()->currentIndex().row();
明らかな現在のビューの間違ったインデックス カウントを与えます。
QSetで選択した行から値(int)を抽出するにはどうすればよいですか? この関数をモデルに追加したとき:
foreach (const int &value, m_filterSet)
qDebug() << value;
すべての i 値が正常に出力されました。例: 3410、3411、3412 (これらは私のクライアント ID です)
Qset で選択した行のこの ID を抽出できれば、インターン QList を反復処理する関数を記述して、一致するものを見つけることができます。
if(m_Intern[i].nClientID == nId){ // nId = value inside Qset for selected row in view
return nIdx;
}