Seite 1 von 1

QSqlTable: ist eine Zeile bereits gelöscht?

Verfasst: 18. März 2011 18:55
von Al_
QSqlTable: ist eine Zeile bereits gelöscht, aber die Löschung noch nicht in die Datenbank submitted?

Ich sollte herausfinden, ob eine Tabellenzeile (respektive der zugehörige QSqlRecord oder QModelIndex) bereits gelöscht ist, aber noch nicht submitted. Dies tritt bei OnManualSubmit auf, wenn der Benutzer eine Zeile löscht, was meine Applikation in tableModel->removeRow(...) übersetzt.

Ein QTableView zeigt solche gelöschte Zeilen mit einerm '!' anstelle der Zeilennummer an. Wo finde ich diese Information programmatisch? Zum Beispiel, um solche Zeilen mit tableView->setRowHidden(...) auszublenden oder in einem anderen Font (strike-through) darzustellen?

Vergleiche zu einem verwandten Thema auch http://www.qtforum.de/forum/viewtopic.php?t=13208

Al_

Verfasst: 18. März 2011 19:12
von upsala

Code: Alles auswählen

bool QSqlTableModel::isDirty ( const QModelIndex & index ) const
reicht nicht?

Verfasst: 18. März 2011 20:31
von Al_
@upsala:
QSqlTableModel::isDirty gibt true zurück, wenn etwas an der Zeile geändert wurde, nicht nur, wenn die Zeile gelöscht wurde. Deshalb genügt diese Funktion leider nicht.

Al_

Verfasst: 18. März 2011 21:02
von Al_
In einem englischen Forum http://www.qtcentre.org/threads/27353-d ... QTableView habe ich gefunden, dass man auf das undokumentierte '!' zurückgreifen muss. Was mir allerdings noch nicht weiter hilft: ich muss in einem model, nicht in einem view wissen, ob die Zeile gelöscht ist.

Al_

Verfasst: 18. März 2011 21:36
von upsala
Dann frag halt headerData() deines QSqlTableModel ab.

[GELÖST] QSqlTable: ist eine Zeile bereits gelöscht?

Verfasst: 19. März 2011 07:47
von Al_
Danke. Funktioniert! :D

Da bei einem QSqlTableModel die Zeilentitel nicht geändert werden können (nur die Spaltentitel), kann auch niemand das '!' löschen.

Al_