Dialog als Delegate - wie Daten im Model speichern?
Verfasst: 13. Juli 2006 14:09
Hallo,
ich habe ein auf dem Simple Dom Model Tutorail basierendes Model, das View ist ein QTreeView. Die Daten (verschiedene Attribute eines XML-Tags) sollen in einem Dialog bearbeitet werden können, also habe ich ein QDialog als Delegate erstellt. Die Daten können mittels einer ComboBox und eines LineEdit bearbeitet werden - das funktioniert auch, nur das Speichern im Model funktioniert nicht, irgenwie verstehe ich das Prinzip nicht so richtig. Wenn ich in dem Dialog auf OK klicke, dann sollen die Daten in das Model geschrieben werden, gibt es ein Signal dafür, commitData() im Delegate funktioniert nicht.
Meine zweite Frage ist, wie kann ich das Delegate über ein Icon in der ToolBar aufrufen und nicht nur über einen Doppelklick? Bis jetzt habe ich folgendes:
aber der Dialog öffnet sich nicht, liegt wahrscheinlich an dem QStyleOptionViewItem, aber so recht weiss ich damit nichts anzufangen, bin neu in Qt und die Doku hilft auch nicht immer so richtig weiter.
Danke schonmal für eure Antworten!
D.
ich habe ein auf dem Simple Dom Model Tutorail basierendes Model, das View ist ein QTreeView. Die Daten (verschiedene Attribute eines XML-Tags) sollen in einem Dialog bearbeitet werden können, also habe ich ein QDialog als Delegate erstellt. Die Daten können mittels einer ComboBox und eines LineEdit bearbeitet werden - das funktioniert auch, nur das Speichern im Model funktioniert nicht, irgenwie verstehe ich das Prinzip nicht so richtig. Wenn ich in dem Dialog auf OK klicke, dann sollen die Daten in das Model geschrieben werden, gibt es ein Signal dafür, commitData() im Delegate funktioniert nicht.
Meine zweite Frage ist, wie kann ich das Delegate über ein Icon in der ToolBar aufrufen und nicht nur über einen Doppelklick? Bis jetzt habe ich folgendes:
Code: Alles auswählen
QStyleOptionViewItem *option = new QStyleOptionViewItem;
option->initFrom(this);
editDelegate->createEditor(this, *option, view->currentIndex());
Danke schonmal für eure Antworten!
D.