Qt - Speicherproblem
-
Hi,
bei meinem TextEditor habe ich ein Problem. Die Speichern-Methode funktioniert nicht richtig:
In meiner Klasse ist QString fileName ein public-Attribut.
void MainWindow::saveFile() { if(fileName.isEmpty()) { save_asFile(); } else { QFile file(fileName); file.write((editor ->toPlainText()).toAscii()); statusBar() ->showMessage(tr("Dokument erfolgreich gespeichert") ); setWindowTitle(fileName); } } void MainWindow::save_asFile() { fileName = QFileDialog::getSaveFileName(this, tr("Datei speichern unter..."), "", "Text - Dateien(*txt);;"); QFile file(fileName); if(fileName.isEmpty()) { return; } if(QFile::exists(fileName)) { QString bakName = fileName; bakName.append("~bak"); QFile::copy (fileName, bakName); } if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::warning(this, tr("Fehler beim Öffnen"), tr("Datei nicht in Datei schreiben %1: \n%2.") .arg(fileName).arg(file.errorString() ) ); return; } file.write((editor ->toPlainText()).toAscii()); statusBar() ->showMessage(tr("Dokument erfolgreich gespeichert") ); setWindowTitle(fileName); }
(Sorry für die teils nicht ganz korrekte Formatierung)
Die speichern unter... und speichern Methoden werden korrekt aufgerufen... allerdings funktioniert die normale speichern-Methode nicht und somit können keine änderungen am text gesichert werden... ist meine Deklaration von QFile u.U.fehlerhaft? Woran könnte das liegen?
Danke für Eure Tipps!
Johannes
-
du oeffnest ja die Datei nicht, bevor du zu schreiben anfaengst
-
Du has recht, ich habe den Verzweigungs-Block "if(!file.open(QIODevice::WriteOnly | QIODevice::Text))" bei der normalen save-Methode vergessen zu implementieren... jetzt funktioniert es. Danke für den Hinweis!