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% Da Sie die Zeichenfolge aus dem Dialog mit getSaveFileName
erhalten, können Sie einfach Folgendes tun:
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.
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%Tags und Links c++ qt qfiledialog