Seite 1 von 1

Datei speichern

Verfasst: 17. Februar 2009 10:13
von nkc
Hallo,

wie speichere ich eine Datei ab?
Bis zum folgenden Code wird der Speicher-Dialog aufgerufen,
mit deren Hilfe Speicherort und Dateiname festgelegt wird.

Code: Alles auswählen

QString xml = doc.toString();
QFileDialog::getSaveFileName(this, tr("Save File"),
                                 "/Neues Dokument", tr("xml-File (*.xml)"));
Wie speichere ich nun diese Datei ab?

Danke

Verfasst: 17. Februar 2009 10:22
von franzf
Dein doc ist ein QDomDocument, oder?
Ein QDomDocument erbt von QDomNode, was eine save() Methode hat. (Schau dir das mal im assistant an, ist nie schlecht zu wissen, welche Methoden geerbt wurden, brauchst du sicher noch öfter ;))
Ansonsten kannst du auch ein QFile erstellen, und da mittels write(), QDataStream oder QTextStream reinschreiben (deinen doc.toString()).

Verfasst: 17. Februar 2009 10:37
von nkc
Ja, doc ist ein QDomDocument.

Ich wollte das mit der Methode QNode::save() speichern.
Ich weiß jedoch nicht, wie ich dies auf die Methode anwenden kann.

Code: Alles auswählen

void QDomNode::save ( QTextStream & str, int indent ) const

Verfasst: 17. Februar 2009 10:45
von franzf

Code: Alles auswählen

QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                                 "/Neues Dokument", tr("xml-File (*.xml)"));
QFile file( fileName );
QTextStream str( &file );
doc.save( str, 2 );
So ungefähr.

Wie kommt man drauf?
1) QDomNode::save() erwartet einen QTextSTream als ersten Parameter.
2) Einen QTextStream kannst du mit einem QIODevice* erstellen.
3) Glücklicherweise ist QFile ein QIODevice.
4) Demnach einfach ein QFile mit dem Namen erstellen, dem QTextStream-Konstruktor übergeben und per QDomNode::save reinschreiben.