[gelöst] DateTime to Timestamp

Alles zum Qt Framework für Java
Antworten
TieKei
Beiträge: 5
Registriert: 7. Juli 2008 00:37

[gelöst] DateTime to Timestamp

Beitrag von TieKei »

Hi!

Ich habe einen QSqlTableModel - Mapping auf einem dateTimeEdit.
funktioniert korrekt und trägt mir den dateTime in die Datenbank.

Wie realisiere ich, dass er stattdessen aber einen Timestamp einträgt?

Vielleicht geht es mit einem QDelegate, aber wenn, weiß ich nicht wie, denn ich will eigentlich kein neues Widget öffnen oder so.
Zuletzt geändert von TieKei am 7. Juli 2008 19:26, insgesamt 1-mal geändert.
TieKei
Beiträge: 5
Registriert: 7. Juli 2008 00:37

Beitrag von TieKei »

so, selbst gelöst ;)

Geht doch mit Delegate, hier ein kleines Beispiel:

Code: Alles auswählen

_MeinMapper.addMapping(ui.dateTimeEdit, 1);   //ein normales Mapping (das dateTimeEdit, bekommt die Daten aus Column 1)
_MeinMapper.setItemDelegate(new MeinItemDelegate()); //erzeugt ein neues Exemplar der Klasse MeinItemDelegate
Die Klasse MeinItemDelegate:

Code: Alles auswählen

public class MeinItemDelegate extends QItemDelegate {

	public void setEditorData(QWidget editor, QModelIndex index ) { //hier wird das AUSLESEN behandelt
		if(index.column() == 1) { //falls das Object aus Column 1 stammt...
			QDateTime date = new QDateTime(); //erzeuge neues QDateTime Object (temporär)
			date.setTime_t(((Long)index.data()).intValue()); //gib dem neuem Object die Werte aus der DB (also den Timestamp)
			((QDateTimeEdit)editor).setDateTime(date); //übergebe die werte des neuen temp Objects dem editor Widget (also meinem "echtem" DateTimeEdit)
               } else {
			super.setEditorData(editor, index); 
		}
	}
	
	public void setModelData(QWidget editor, QAbstractItemModel model, QModelIndex index) { //hier verändere ich die Daten bevor sie in die DB geschrieben werden
		if(index.column() == 1) {
			QDateTimeEdit edit = (QDateTimeEdit)editor; //edit wird dem editor Widget gleich gesetzt (bekommt die werte des "echten" DateTimeEdit)
			model.setData(index, new Long(((QDateTimeEdit)edit).dateTime().toTime_t())); //ich setze meine Daten des Models auf den Timestamp des DateTimeEdit
// das mache ich mit .dateTime().toTime_t()
		} else {
			super.setModelData(editor, model, index);
		}
	}
}
Antworten