1、MyFileDialog.qml
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Dialogs 1.3
FileDialog {
id: myfileDialog
signal mySignal(string info)
property string filaname: myfileDialog.fileUrl
title: qsTr("Please choose a file")
nameFilters: ["txt Files (*.txt)","All Files (*)"]
selectMultiple: false
//selectMultiple: true
// 设置默认打开路径为当前用户的桌面
onAccepted: {
console.log("You chose: " + myfileDialog.fileUrls)
console.log("You chose1: " + myfileDialog.fileUrl)
console.log("You chose3: " + myfileDialog.folder)
filaname = myfileDialog.fileUrl
filaname = filaname.toString().substring(8,filaname.length)
console.log("You chose4 " + filaname)
mySignal(filaname)
}
onRejected: {
console.log("Canceled")
}
Component.onCompleted: {
// 在这里设置默认路径
folder = StandardPaths.writableLocation(StandardPaths.DesktopLocation)
}
}
2、调用
CNCFileDialog{
id: fileDlg
property string inputValue: ""
onMySignal: {
fileDlg.inputValue = fileDlg.filaname
//自定义函数调用,传值“fileDlg.inputValue”
。。。。。
}
}
Button {
id: btChange
x: 10
y: 30
width: 164
height: 30
inputValue:"打开"
onClicked:{
fileDlg.open()
}
}
3、异常处理:module "QtQuick.Dialogs" is not installed
将qml目录下的Qt和QtQuick目录复制到qt工程的运行目录