Seite 1 von 1

QFileDialog, Datei NICHT überschreiben

Verfasst: 4. März 2009 09:27
von Paddre
Moinsen.

zunächst geb ich euch mal folgenden Code:

Code: Alles auswählen

QString filename = QFileDialog::getSaveFileName(this, tr("Datei speichern"), "D:/",tr("VRML-Files (*.wrl)"));
	
if (filename.isEmpty())
{
	return;
}

while(QFile::exists(filename))
{
	filename.remove(".wrl");
	filename.append("_2.wrl");
}
string path = filename.toStdString();

ofstream file_out(path.c_str());
Mein problem ist, dass wenn ich die Datei speichern will und einen Namen auswähle den es im Ausgewählten Ordner schon gibt, die Meldung kommt ob ich denn die Datei überschreiben will. Is ja auch logisch.

Aber 1. will ich das nicht und 2. habe ich ja meine Alternativnamensgebung, falls die Datei schon existiert.

Wie krieg ich das hin, dass der QFileDialog das einfach so hinnimmt dass es die Datei schon gibt und die while-Schleife das dann regelt?

Bin mir nicht sicher ob das ein QT oder C++-Problem ist. Denke aber das hat mir dem QFileDialog zu tun.

Ist wahrscheinlich eine total einfache Antwort aber ich komm da nicht drauf und die Doku hat mir nicht weitergeholfen (für menschliches Versagen meinerseits bitte ich um Verständnis ;)

Verfasst: 4. März 2009 10:50
von RHBaum
Glaub ned das das so einfach geht was du willst.

wenn du nen dateinamen auswaehlst, den es schon gibt, wird die abfrage immer kommen.

Ich selber faend es auch unlogisch, dem user mit nem filedialog zum waehlen eines dateinames aufzufordern, und dann seine datei doch unter nem anderen namen abzulegen.
beispiel er legt test.txt an, und weil es test.txt scho gibt, machst du test_001.txt draus. Wie soll der user dann seine dateien wieder finden ???

Wenn du sowas willst, solltest du dem user einen Pfad und ein "namensschema" (ohne QFileDialog) angeben lassen. Dann isses fuer ihn klarer, das der name der datei in abhaengigkeit generiert wird.

Ciao ...

Verfasst: 4. März 2009 12:53
von upsala
QFileDialog::DontConfirmOverwrite

Verfasst: 4. März 2009 14:51
von Paddre
Haste recht ;) hab ich nun auch so gemacht...

Aber interessant wär schon inwieweit man in sowas eingreifen kann