QtQuick.Dialogs中的FileDialog设置默认目录的问题

在QML中,假如想要使用文件浏览器选择文件或者文件夹时。可以使用FileDialog
FileDialog有个属性folder,设置好路径之后,当你打开fileDialog时,fileDialog当前展示的文件夹就是你设置的路径。
但是这个folder的设置有点问题,和路径的层级有关系

  • 假如你的目标路径是大于等于三级的(比如file:///D:/Advantech/DAQNavi),基本不会有啥问题.
  • 假如是二级目录,必须要加上后斜杆,比如要写file:///D:/Advantech/,而不能写file:///D:/Advantech
  • 假如是一级目录,必须不能加上后斜杆,比如要写file:///D:,而不能写file:///D:/

但是,这些都是在FileDialog的代码块内直接赋值才存在的问题。假如你是使用fileDialog.folder = "file:///C:/Users/"这样的方式赋值的话,加不加斜杆貌似都没问题。
具体的情况可以自行测试一下。

    Timer{
        interval: 2000
        running: true
        repeat: false
        onTriggered: {
            // fileDialog.folder = "file:///C:/Users/"
            console.log("before url:", fileDialog.folder)
            fileDialog.open()
            console.log("after url:", fileDialog.folder)
        }
    }

    FileDialog{
        id: fileDialog
        // folder: "file:///C:/Users/"
        folder: "file:///C:"
        // folder: shortcuts.home
        selectFolder: true
        onFolderChanged: {
            console.log("folder changed:", folder)
        }
    }
posted @ 2024-07-11 11:37  韭菜钟  阅读(653)  评论(0)    收藏  举报