QTableView Änderung überprüfen

Verschiedenes zu Qt
Antworten
pfusterschmied
Beiträge: 91
Registriert: 14. Mai 2007 11:19
Wohnort: Salzburg
Kontaktdaten:

QTableView Änderung überprüfen

Beitrag 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
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

pfusterschmied
Beiträge: 91
Registriert: 14. Mai 2007 11:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du gibst ja auch beim Signal die falschen Datentypen an...
pfusterschmied
Beiträge: 91
Registriert: 14. Mai 2007 11:19
Wohnort: Salzburg
Kontaktdaten:

Wieso

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ok, die Datentypen waren es nicht. Aber 'myModel' hat den Wert 0.
pfusterschmied
Beiträge: 91
Registriert: 14. Mai 2007 11:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag 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=
Antworten