We're building a Qt Quick app, that must be able to save a file under a given name.
In the FileDialog component you can only set a directory. This is not very user-friendly, since you don't want to type in a filename by hand every time you download a file.
So far we tried different things
FileDialog from QtQuick.Dialogs: filename cannot be set
Native dialog via QPlatformFileDialogHelper (naughty private c++ hack): filename cannot be set on Linux (Gnome)
Native dialog via static QFileDialog::getSaveFileName(): in Quick application there is no QWidget available for 'parent'
QT dialog via QFileDialog instance: Modality doeas not work, since 'parent' is not set. In Quick application there is no QWidget available for setParent() call
(Using C++ with QT 5.1 and QtQuick 2.1 incl. all desktop components)
This blog post covers the whole problem and provides a possible solution:
Advanced FileDialog in QML (Save file under given name) (RIP Kullo blog)
The repository implementing the solution is here: https://github.com/kullo/qml-file-dialog-demo
I hope this will be still helpful. I found a compromise that at least works for me. I used Qt.labs.platform 1.1 FileDialog QML Type: 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
}
Try setting the FileDialog selectExisting property to false.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With