QTQuick(QML)中的FileDialog:以给定名称保存文件

时间:2013-11-30 16:45:28

标签: qt qml qt-quick qtquick2 qfiledialog

我们正在构建一个Qt Quick应用程序,该应用程序必须能够以给定名称保存文件

FileDialog组件中,您只能设置目录。这不是非常用户友好,因为您不希望每次下载文件时手动输入文件名。

到目前为止,我们尝试了不同的东西

  1. 来自QtQuick.Dialogs的FileDialog:无法设置文件名

  2. 通过QPlatformFileDialogHelper进行原生对话(淘气私有c ++ hack):无法在Linux(Gnome)上设置文件名

  3. 通过静态QFileDialog :: getSaveFileName()的本地对话框:在快速应用程序中,没有可用于“父”的QWidget

  4. 通过QFileDialog实例进行QT对话:由于未设置“parent”,因此模态doe不起作用。在快速应用程序中,没有可用于setParent()调用的QWidget

  5. (使用C ++与QT 5.1和QtQuick 2.1,包括所有桌面组件)

3 个答案:

答案 0 :(得分:5)

此博客文章涵盖了整个问题,并提供了一个可能的解决方案: Advanced FileDialog in QML (Save file under given name)

答案 1 :(得分:1)

我希望这仍然会有所帮助。我找到了一种折衷方案,至少对我有用。 我使用了Qt.labs.platform 1.1 FileDialog QML类型:https://doc.qt.io/qt-5/qml-qt-labs-platform-filedialog.html

FileDialog {
            id: saveDialog
            property MyClass myObj
            title: "Save Dialog"
            folder: myObjHasAPath? myObj.path: "file:///" //Here you can set your default folder
            currentFile: "file:///"+myObj.name //The name of the item that you want to save
            fileMode: Platform.FileDialog.SaveFile
        }

答案 2 :(得分:-1)

尝试将FileDialog selectExisting属性设置为false。