Frage

Ich versuche einfach, um eine Datei zu speichern. Ich brauche aber einen Dateinamen ohne Suffix eingegeben, um automatisch ein Standard-Suffix zu erhalten (die setDefaultSuffix () der Fall ist).

Ich möchte lieber nicht vollständig die native verlieren, nur für diese Speichern-Dialog. exec () wird nicht von QDialog überlastet, so dass er völlig die native Haken umgeht (ignorieren die DontUseNativeDialog Option, auch wenn es falsch).

Wenn ich die Datei überschreiben Warnung abzuschalten und das Standard Suffix selbst nachdem die Funktion zurückkehrt anzuhängen, dann würde ich wieder Öffnen des Dialogs sein, wenn der Benutzer nicht wollen, zu überschreiben ... und das ist nur hässlich.

Gibt es ein Signal I und schnell inject Standard Suffix fangen kann, wenn er nicht da ist? Ich vermute nicht, da es sich um ein nativer Dialog ist.

Gibt es etwas, was ich falsch mache mit dem Filter? Ich habe nur eine Filter Wahl. Es sollte diese Erweiterung verwenden.

Das scheint ziemlich lahm. Starten Sie den Dialog und einfach die Eingabe von „test“ sollte nie in einer erweiterungs Datei führen. "Test.", Ja. „Test“ auf keinen Fall. Das wird wirklich die Benutzer verwirren, wenn sie laden getroffen und kann die Datei nicht sehen, dass sie gerade gespeichert.

ich denke, der plattformübergreifende Teil von Qt gibt mir kleinste gemeinsamen Nenner Dateidialog Funktionalität?

War es hilfreich?

Lösung

Ja, wenn Sie auf den Quellcode Qt sehen ist es offensichtlich, dass nur die statischen Funktionen verwendet native Dateidialoge. Es ist nicht möglich zu erhalten nativen Dialoge andere Art und Weise, leider ...

Andere Tipps

Haben Sie die Filteroptionen in den statischen Funktionen ausprobiert? [Edit:. Oops, bemerkt, dass Sie bereits]

ich das selbst gerade versucht, zum Beispiel, und die Dinge scheinen ziemlich vernünftig zu sein:

QString filter = "Text files (*.txt)";
QString selectedFilter;
QString filename = QFileDialog::getSaveFileName(0, "", "", filter, &selectedFilter);

Eingabe von test in den Speichern-Dialog kehrt test.txt .
Eingabe von Test. im Speichern-Dialog kehrt test..txt .
Eingabe von test.foo in den Speichern-Dialog kehrt test.foo .

Diese alle den entsprechenden Überschreibungs Dialog zeigen, ob es bereits eine bestehende Datei mit diesem Namen.

Die einzige Möglichkeit, die ich bekommen kann Test , ohne Suffixe, ist indem sie sie mit Anführungszeichen umgeben ( "test" ) oder durch erste Eingabe von *. * (die es alle Dateien anzeigen lassen wird) und dann Eingabe von Test . (Obwohl eine Kuriosität, dass selectedFilter ist immer noch die Filter enthält im Dialog angezeigt, auch wenn es nicht verwendet wird).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top