QT4.2 MVC: Problem mit einem eigenem Delegate

Alles rund um die Programmierung mit Qt
Antworten
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

QT4.2 MVC: Problem mit einem eigenem Delegate

Beitrag von nando »

Hi,

ich beiss mir gerade die Zähne an folgendem Problem aus....:
ich habe ein QTableWidget und ein eigenes DateDelegate geschrieben.
Als Editor in meinem DateDelegate verwende ich eine eigene von QCalendarWidget abgeleitete Klasse.
Diese hat das QT 4.2 neue QCalendarWidget und zusätzlich drunter 2 Buttons (OKay, Cancel).
Wenn ich jetzt ein Doppelklick in die QTableWidget in eine Datums-Spalte mache wird auch dass Delegate Erzeugt, also mein CalendarWidget richtig angezeigt. Auch wird das in der Tabelle vorhande Datum richtig in das Calendar Widget übernommen, ABER...
Nun zu meinem Problem:
Wenn ich auf okay clicke, soll das aktuelle Datum in die Zelle der Tabelle übernommen werden. Dazu muss ich das Model ändern... Bei den Examples wird stat meinem Widget eine QSpinBox genommen...
Dann funktioniert das, aber wenn ich okay drücke weiss ich nicht, wie ich aus meinem Widget das Datum in das Modell bekomme... Bzw. weiss ich nicht wie ich Triggern kann, dass wenn man auf Okay klickt, das setModelDate Methode meines Delegates aufgerufen wird.... :-(

Kann mir jemand helfen????

Gruss,
Nando
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

Ich hatte mal ein ähnliches Problem, ich wollte einen QDialog als Delegate verwenden und das hat auch nicht so funktioniert. Letztendlich habe ich das Signal doubleClicked() genommen und so den Dialog aufgerufen, alle Daten geändert und dann in das Model mittels setData() zurückgeschrieben. Das ist evtl. auch ein Ansatz für dein Problem....

Gruss,
D.
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

Beitrag von nando »

du meinst das double click signal der qtablewidget nehmen , dann das neue widget erzeugen... und bei okay die daten in das modell schreiben ??

hab ich versucht, aber mein problem war, beim schreiben der daten in das model braucht man einen QModelIndex in das modell.... den hab ich aber irgendwie nicht?? oder?
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

Den ModelIndex bekommst du durch den QTableView - etwa view->currentIndex(). Dann kannst du damit dein Widget aufrufen und beim klicken auf OK weder dann die Daten per setData() ins Model geschrieben. Prinzipiell könnte das etwa so aussehen (ohne Gewähr):

Code: Alles auswählen

void MainWindow::on_doubleClicked()
{
	EinDialog *myDialog = new EinDialog(this);
	QModelIndex index = view->currentIndex();

	if(index.isValid()){
      myDialog->setDialogData(index);
		myDialog->exec();
	}
}
Gruss,
D.
Antworten