私はある種類のアドレス帳をプログラミングしています。私のアプリケーションの左側には私の連絡先の名前を表示するQListViewがあります。私のアプリケーションの右側には、連絡先の情報(名前、住所、電話番号など)を入力するためのフォームがあります。 QSqlTableModelに連絡先のデータを保存しています。 QSqlTableModelの1列を表示するためにQListViewを使用します。QListView内で、基になるQSqlTableModelの最後に挿入されたレコードに対応する項目を選択する方法は?
質問:QSqlTableModelで最後に挿入された連絡先に対応するQListViewの項目を自動的に選択するにはどうすればよいですか?
これは私が私のモデルを設定する方法である:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("datenbank.db");
model = new QSqlTableModel(this, db);
model->setTable("demodaten");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setSort(0, Qt::AscendingOrder);
model->select();
view->setModel(model);
view->setModelColumn(0);
これは私が私のモデルに新しいレコードを追加する方法です:
QSqlRecord record = model->record();
for(int i = 0; i<record.count(); i++){
record.setValue(i, "");
}
record.setValue("codenummer", p.getCodeNummer());
record.setValue("vorname", p.getVorname());
record.setValue("nachname", p.getNachname());
record.setValue("geburtsdatum", p.getGeburtsdatum());
model->insertRecord(-1, record);
model->submitAll();
こんにちはセルジュ、順序を参照してくださいdidsnt方法 わかりませんあなたの助け!しかし、残念ながらそれは動作しません。常にQListViewの最初の項目が選択されています。それ以外に奇妙なのは、新しい行がQSqlTableModelに挿入されたときにon_rowsInserted()が2回呼び出されるようです。最初の呼び出しでは、私のQListViewの最後の項目のインデックスが常に取得されます。 2番目の呼び出しでは常に0になります。 – Tom
"on_rowsInserted()が2回呼び出されたようです"と私には聞こえません。あなたの問題の根本的な原因は、モデルの初期化方法と新しい行の挿入方法の詳細です。 –
こんにちはSerge、私はいくつかのコードを追加しました。たぶんあなたは私の問題を解決する方法を知っています。前もって感謝します! – Tom