Seite 1 von 1

Simple Dom Model - wie Item hinzufügen?

Verfasst: 18. Juli 2006 17:16
von dhcase
Hallo,

wie kann ich dem Simple Dom Model aus der Qt-Doku ein Item hinzufügen?

Erster Versuch:
- in insertRow() ein neues XML-Element erstellen
- dieses Element an das domDocument mittels insertAfter() oder appendChild() anfügen
Das funktioniert allerdings nicht, zu meiner Verwunderung musste ich feststellen, das domDocument leer ist, dabei sollte es doch das zugrundeliegende XML-Dokument enthalten. Ein Test mit

Code: Alles auswählen

QString xml = domDocument.toString();
liefert einen leeren String zurück. Wie kann das sein? Wie kann ich denn dann später das ganze geänderte Dokument speichern?

Zweiter Versuch:
- in insertRow() ein neues DomItem erzeugen

Code: Alles auswählen

DomItem newItem(element, row, parentItem);
- das Item sollte dann ja ein child des parentItem sein und im Model vorkommen
Das scheint aber auch nicht zu funktionieren, es passiert jedenfalls nichts.

Hat jemand eine Idee, wie ich das machen kann? Bei Bedarf kann ich gerne den Quellcode posten.

Danke!
D.

[edit]
Ich verstehe nicht ganz, an welcher Stelle die Daten in das Model eingelesen werden... im Konstruktor des Model wird nur das rootItem festgelegt, ein setupModelData() wie im Simple Tree Model fehlt.
Hmm... es wird Zeit, dass das neue Qt4-Buch rauskommt ;-)
[/edit]

Verfasst: 19. Juli 2006 07:14
von dhcase
Ok, die Frage nach dem Einlesen der Daten hat sich erledigt, das passiert in DomItem::child(), welches von DomModel::index() mit der entsprechenden Zeile aufgerufen wird.
Warum domDocument leer ist, verstehe ich aber immer noch nicht... heute Nachmittag werde ich mal weiter testen.

Verfasst: 19. Juli 2006 22:35
von dhcase
Irgendwie verstehe ich das nicht, wenn ich aus dem Model heraus das domDocument bearbeiten will, dann ist es leer, domDocument.toString() gibt einen leeren String zurück. Ich habe testweise die Methode

Code: Alles auswählen

QDomDocument DomModel::getDomDocument()
{
	return domDocument;
}
geschrieben, wenn ich die aus dem MainWindow aus aufrufe, etwa

Code: Alles auswählen

QDomDocument doc = model->getDomDocument();
QString xml = doc.toString();
dann bekomme ich das XML-Dokument!
Kann mir das jemand erklären??? Ich stehe echt auf dem Schlauch!