【发布时间】:2021-01-20 13:19:45
【问题描述】:
用于保存文件的 QML FileDialog 在调试模式下工作正常。
代码是:
import QtQuick 2.5
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Dialogs 1.2
import Qt.labs.settings 1.1
import QtQuick.Controls.Styles 1.4
import Qt.labs.platform 1.0
Item {
property string exportSceneName: "exported_scene"
property url exportFolder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation)
signal startExport()
onStartExport: {
runLogic()
}
function runLogic() {
// ...
}
Button {
onClicked: {
fileDialog.open()
}
}
FileDialog {
id: fileDialog
folder: exportFolder
fileMode: FileDialog.SaveFile
title: qsTr("Export Scene As STL")
onAccepted: {
exportFolder = folder
var name = basename(file)
exportSceneName = name
startExport()
}
}
function basename(str) {
return (String(str).slice(String(str).lastIndexOf("/")+1))
}
}
发布模式
令人惊讶的是,在发布模式下,对话框是 open-type 而不是 save-type:
我试过了:
- 更改 QML 导入版本
- 清理发布构建目录
- 修改
qtquickcontrols2.conf文件
但是,它们都不起作用!我研究过类似的帖子,如this one,但建议没有用。我还能尝试什么?谢谢。
解决方案
通过在 QML 文件中删除此导入来修复:
import QtQuick.Dialogs 1.2
【问题讨论】:
标签: qt qml qfiledialog