Datei speichern

Alles rund um die Programmierung mit Qt
Antworten
nkc
Beiträge: 67
Registriert: 3. November 2008 12:01

Datei speichern

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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()).
nkc
Beiträge: 67
Registriert: 3. November 2008 12:01

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
Antworten