目前我遇到了Qt QML FileDialog的问题。这个问题存在于多个系统和在生产代码和测试应用程序中(参见下面的代码块)。
对话框打开正确,但是当选择一个文件时(这不是列表中的第一个文件,所以想象一下:
然后当点击打开(或保存)按钮时,文件夹" 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时会显示相同的行为,但有时它只是起作用。没有真正的理由说明原因。
当文件位于文件夹的死角(因此没有子文件夹)时,打开/保存按钮按预期工作。
有人知道这个问题的解决方案吗?