FileDialog in QTQuick (QML): Save file under given name

14,922

Solution 1

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

Solution 2

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
        }

Solution 3

Try setting the FileDialog selectExisting property to false.

Share:
14,922
Simon Warta
Author by

Simon Warta

Updated on June 25, 2022

Comments

  • Simon Warta
    Simon Warta about 2 years

    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

    1. FileDialog from QtQuick.Dialogs: filename cannot be set

    2. Native dialog via QPlatformFileDialogHelper (naughty private c++ hack): filename cannot be set on Linux (Gnome)

    3. Native dialog via static QFileDialog::getSaveFileName(): in Quick application there is no QWidget available for 'parent'

    4. 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)

  • linquize
    linquize about 10 years
    He used private QT headers, which breaks when upgrading QT
  • Simon Warta
    Simon Warta about 10 years
    Might breakt, jap. But I don't have any other chance. I'll try to keep it up-to-date since we're using it in our software.
  • VALOD9
    VALOD9 over 8 years
    In this post widgets module is used so I cannot get why he didn't create a wrapper above QFileDialog which has selectFile method?
  • Simon Warta
    Simon Warta over 8 years
    @VALOD9 I tried hard to do that. But I did not have a QWidget available that I could use as a parent. Without a parent, modality does not work.
  • VALOD9
    VALOD9 over 8 years
    @SimonWarta I've just added a project sample to GitHub which demonstrates this possibility. And this project doesn't use private headers. Tested on Windows and Linux.
  • Simon Warta
    Simon Warta over 8 years
    @VALOD9 okay, where? I'd like to have a look at it. Feel free to add it as an alternative answer here.
  • VALOD9
    VALOD9 over 8 years
    @SimonWarta sorry. I forgot to add a link :)
  • VALOD9
    VALOD9 over 8 years
    @SimonWarta link is posted as an answer.
  • Brykyz
    Brykyz about 3 years
    Since the link is dead, here is link to original repository with implementation.