Gibt es eine Möglichkeit, mit QFileDialog unter Linux automatisch Erweiterungen zu einer Datei hinzuzufügen?

8

Ich möchte, dass der Benutzer einen Namen für eine Datei eingeben kann, die als XML-Datei gespeichert wird. Derzeit unter Windows und Mac, wenn Sie "test" als Dateiname eingeben, wird automatisch ".xml" hinzugefügt, was ich möchte. Leider habe ich beim Testen eines Linux-Builds festgestellt, dass die Eingabe eines Dateinamens ohne Erweiterung als normale Datei gespeichert wird. Der Benutzer muss die Erweiterung in der Dateizeichenfolge (d. H. "Test.xml") angeben, damit sie im richtigen Format gespeichert wird.

Der Code, den ich verwende, ist unten. Ist das ein Qt-Fehler oder gibt es eine Möglichkeit, in Qt anzugeben, dass eine Erweiterung hinzugefügt werden soll, wenn keine gefunden wurde?

%Vor%     
Robert Whitley 22.03.2012, 12:21
quelle

3 Antworten

9

Da Sie die Zeichenfolge aus dem Dialog mit getSaveFileName erhalten, können Sie einfach Folgendes tun:

%Vor%

Unter Linux ist das wahrscheinlich anders, weil dieser kleine Ausschnitt in der Dokumentation für getSaveFileName :

  

Unter Windows, Mac OS X und Symbian ^ 3 verwendet diese statische Funktion den nativen Dateidialog und keinen QFileDialog.

Mit anderen Worten, es ist das Hinzufügen des Präfixes (durch die nativen Dialoge gemacht), das zumindest in Bezug auf Qt abartig ist.

Wie in den Kommentaren erwähnt, kann ein Problem mit dieser Lösung darin bestehen, dass das Dialogfeld selbst Sie nicht benachrichtigt, wenn Sie xyzzy manuell eingeben und die Datei xyzzy.xml bereits existiert (vorausgesetzt, die nativen Dialoge sind vorhanden) tu das - ich habe es nicht wirklich überprüft). Wenn Sie dieses Verhalten möchten, müssen Sie es auch implementieren.

    
paxdiablo 22.03.2012, 12:25
quelle
4

Wir haben unsere eigene Methode zum Speichern von Dialogen erstellt, um dies zu umgehen. Die Lösung ist im Wesentlichen die gleiche wie @ paxdiablos Antwort (fügen Sie einfach die Erweiterung hinzu), aber das ist allgemeiner:

%Vor%     
Dave Mateer 22.03.2012 12:44
quelle
1

Haben Sie sich QFileDialog :: setDefaultSuffix angesehen?

    
olegst 27.06.2013 06:08
quelle

Tags und Links