Qt5.7 QML FileDialog打开/保存打开第一个项目而不是选定的项目

时间:2016-10-20 15:10:08

标签: javascript qt qml

目前我遇到了Qt QML FileDialog的问题。这个问题存在于多个系统和在生产代码和测试应用程序中(参见下面的代码块)。

对话框打开正确,但是当选择一个文件时(这不是列表中的第一个文件,所以想象一下:

  • FolderFoo
  • FolderFaa
  • FileToOpen
  • FileFoo

然后当点击打开(或保存)按钮时,文件夹" FolderFoo"在对话框中打开,而不是关闭FileDialog并记录" FileToOpen"的文件路径。

使用QML应用程序重现非常简单:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtQuick.Dialogs 1.2

ApplicationWindow {
    visible: true
    width: 1280
    height: 640
    title: qsTr("Hello World")

    Button {
        id: openButton
        width: 640
        height: 640
        text: qsTr("Open")
        onClicked: {
            fileDialog.title = "Open file"
            fileDialog.nameFilters = [ "All files (*)" ]
            fileDialog.selectExisting = true
            fileDialog.open()
        }
    }
    Button {
        id: saveButton
        width: 640
        height: 640
        anchors.left: openButton.right
        text: qsTr("Save")
        onClicked: {
            fileDialog.title = "Save to file"
            fileDialog.nameFilters = [ "All files (*)" ]
            fileDialog.selectExisting = false
            fileDialog.open()
        }
    }

    FileDialog {
        id: fileDialog
        width: 1000
        height: 600
        folder: shortcuts.home
        selectMultiple: false
        selectFolder: false
        onAccepted: {
            if(fileDialog.selectExisting == true) {
                console.log(fileDialog.fileUrl)
            }
            else {
                console.log(fileDialog.fileUrl)
            }
        }
    }
}

使用nameFilters时会显示相同的行为,但有时它只是起作用。没有真正的理由说明原因。

当文件位于文件夹的死角(因此没有子文件夹)时,打开/保存按钮按预期工作。

有人知道这个问题的解决方案吗?

0 个答案:

没有答案