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!


Anmelden zum Antworten