我们正在构建一个Qt Quick应用程序,该应用程序必须能够以给定名称保存文件。
在FileDialog组件中,您只能设置目录。这不是非常用户友好,因为您不希望每次下载文件时手动输入文件名。
到目前为止,我们尝试了不同的东西
来自QtQuick.Dialogs的FileDialog:无法设置文件名
通过QPlatformFileDialogHelper进行原生对话(淘气私有c ++ hack):无法在Linux(Gnome)上设置文件名
通过静态QFileDialog :: getSaveFileName()的本地对话框:在快速应用程序中,没有可用于“父”的QWidget
通过QFileDialog实例进行QT对话:由于未设置“parent”,因此模态doe不起作用。在快速应用程序中,没有可用于setParent()调用的QWidget
(使用C ++与QT 5.1和QtQuick 2.1,包括所有桌面组件)
答案 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。