Seite 1 von 1

QTableView Änderung überprüfen

Verfasst: 8. April 2008 22:16
von pfusterschmied
Hallo an alle,

grob formuliert möchte Ich überprüfen, ob sich der ausgewählte Inhalt einer QTableView geändert hat.

Folgende Überlegung:

Code: Alles auswählen

// Connect um den gerade gewählten Index zu ermitteln
connect (myTableView, SIGNAL(clicked(const QModelIndex) ),this,SLOT(changeTime(const QModelIndex)

// Funktion um den gewählten Datensatz mir TSTAMP zu versehen.
void myProgramm::changeTime(const QModelIndex index)
{	
   QSqlRecord record = OnlineModel->record(index.row());
   uint unix_timestamp = QDateTime::currentDateTime().toTime_t();
   record.setValue (2,unix_timestamp);
}
Mein Problem ist folgendes:
Ich finde keine Funktion/Methode um eine Änderung an den Daten feststellen zu können.

Dieser Beitrag ist in Anlehnung an:
http://qtforum.de/forum/viewtopic.php?t ... 41fb7393b8

Verfasst: 8. April 2008 23:18
von dhcase

Verfasst: 9. April 2008 13:44
von pfusterschmied
Danke für den TIpp.

Ich habe versucht deinen Vorschlag folgender Maßen zu testen:

Code: Alles auswählen

connect (myModel, SIGNAL(dataChanged (const QModelIndex,const QModelIndex) ),this,SLOT(modifiedTable(const QModelIndex,const QModelIndex) ));

// Funktion zur Abfrage der Datenänderung in der Tabelle
void epconfigurator::modifiedTable(const QModelIndex topLeft ,const QModelIndex bottomRight)
{
	qDebug() << topLeft;
	qDebug() << bottomRight;
	qDebug() << "Tabellenindex = " << myTableView->currentIndex();
}
Leider bekomme ich folgende Fehlermeldung:

QObject::connect: Cannot connect (null)::dataChanged (const QModelIndex,const QModelIndex) to epconfigurator::modifiedTable(const QModelIndex,const QModelIndex)

Einen ähnlichen Fehler hatte ich schon mal, als ich bei denSIGNAL and SLOTS unterschiedliche Typen angegeben hatte.

Des weiteren ist mir noch nicht ganz klar, wie ich dann genau jenen Datensatz ermittle, welcher sich geändert hat.

Verfasst: 9. April 2008 16:52
von upsala
Du gibst ja auch beim Signal die falschen Datentypen an...

Wieso

Verfasst: 9. April 2008 18:50
von pfusterschmied
????? Wie bitte ????

Wieso ? Laut Doku:

Code: Alles auswählen

void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )   [signal]
Was passt da nicht?

Verfasst: 9. April 2008 19:18
von upsala
Ok, die Datentypen waren es nicht. Aber 'myModel' hat den Wert 0.

Verfasst: 9. April 2008 19:49
von pfusterschmied
Erklärbar, denn im TableView, welche an myModel gebunden ist ist liefert ja keinen Index der zu updaten wäre, oder verstehe ich das falsch?

Aber selbst wenn ich eine Modifikation durchführe kommt kein SIGNAL.

P.S.:
Wieso gibt es keine einfache Lösung für folgendes Problem:

TableView (z.B. Eintrag in Spalte A der ersten Reihe wird modifiziert)
QSqlTablemodel ( Speichert geänderten Eintrag in der MySQL DB und schreibt gleichzeitig Änderungsdatum in Spalte B der ersten Reihe)

Folgende Lösungsansätze habe nicht bzw. funktionieren nicht richtig:
updateRowInTable() überladen
emit dataChanged () bzw. connect dataChanged ()

Querverweise:
http://qtforum.de/forum/viewtopic.php?t ... highlight=