1

QSQLTableModel からデータを取得する QListView があります。

ユーザーが [追加] ボタンをクリックすると、新しいアイテムを追加して編集用に開きます。

QSqlTableModel *tblModel= qobject_cast<QSqlTableModel *>(ui->listView->model());
if(tblModel->insertRow(tblModel->rowCount()))
    ui->listView->edit(tblModel->index(tblModel->rowCount()-1, 1));

ただし、ユーザーが新しい値の編集を完了すると、listView の選択は失われます。QListView または QSQLTableModel で、選択を「復元」するために編集が終了したときに処理するシグナルが見つかりません。

選択が保持されていることを確認する方法はありますか?

4

1 に答える 1

1

edit() 関数のドキュメントからの抜粋:

この関数は現在のインデックスを変更しないことに注意してください。現在のインデックスは編集する次および前の項目を定義するため、ユーザーはキーボード ナビゲーションが期待どおりに機能しないことに気付く場合があります。一貫したナビゲーション動作を提供するには、この関数の前に同じモデル インデックスで setCurrentIndex() を呼び出します。

于 2012-12-08T15:07:20.920 に答える