Seite 1 von 1

[Qt4] QTreeWidget + XML-DOM

Verfasst: 9. Januar 2010 15:25
von Angerfist
hi,

ich muss ein kleines Programm schreiben, XML Dokument soll eingelesen, bearbeitet werden können und dabei noch einzelne Elemente hinzugefügt und gelöscht werden können.
Das ganze versuche ich mit QTreeWidget zu lösen, sieht eig. ganz gut aus. Das Einlesen und Abspeichern klappt auch wunderbar. Jedoch habe ich nun versucht, das Löschen zu implementieren.

Das klappt auch im TreeWidget hervorragend, er macht was er soll. Wenn ich dann jedoch das abspeichern möchte, erzeugt er mir eine XML-Datei, die das gelöschte Element immernoch enthält. Ich weiß jetzt ehrlich gesagt nicht, wie ich das dem Beibiegen soll?

Löschfunktion:

Code: Alles auswählen

    QTreeWidgetItem *parent = currentItem->parent();
    int index;

    if(parent)
    {
      index = parent->indexOfChild(domTree->currentItem());
      delete parent->takeChild(index);
    }
     else
     {
      index = domTree->indexOfTopLevelItem(domTree->currentItem());
      delete domTree->takeTopLevelItem(index);
     }
     statusBar()->showMessage(tr("Kontakt erfolgreich geloescht"), 3000);
Hier wird der domTree geschrieben:

Code: Alles auswählen

   if(domTree->write(&file))
      statusBar()->showMessage(tr("Datei erfolgreich gespeichert"), 3000);

Code: Alles auswählen

   QDomDocument domDocument;
   DOMTree(QWidget *parent = 0);
   DOMTree *domTree;
DOMTree ist ne abgeleitete Klasse von TreeWidget.

'ne Funktion wie refresh oder update gibt es ja nicht? Ich hab auch schon versucht, ihn nochmal alle items alphabetisch sortieren zu lassen, da müsste er ja eig. merken, dass da was gelöscht wurde..aber pustekuchen. Änderungen an den einzelnen Elementen werden ja auch an domTree vorgenommen und die werden auch 1a übernommen und exportiert. Nur beim Löschen hauts nicht hin..

Hat einer von euch da ne Idee zu? Wäre echt nett =)

Verfasst: 9. Januar 2010 19:26
von upsala
Zum einen würde ich mich mehr am Simple-DOM-Model aus den Examples orientieren.

Funktioniert das einfügen? Wurde schon das richtige QDomDocument gespeichert, wurde schon mal eine Debug-Ausgabe direkt nach dem löschen gemacht?

Verfasst: 10. Januar 2010 11:56
von Angerfist
das einfügen hab ich noch nicht implementiert, da sitz ich grad dran,dürfte aber am ende auf das gleiche problem stoßen wie beim löschen..

das richtige xml wird gespeichert, wenn ich nur die bestehenden sachen editiere..egal welche zeile wird alles 1a übernomen.. da schreib ich den domTree in ein xml file und es funzt..müsste beim löschen ja dann das gleiche eig. gehen?