Ubuntu 16.04 Qt,.qml
嗨,我正在尝试通过调用遍历从用户那里收到的Urls
console.log(fileDialogDCM.fileUrls.count)
在用户成功从FileDialog的目录中选择文件后(获得最大数量)。但是,我收到的是“未定义”。对象fileDialogDCM.fileUrls的类型应为QList<QUrl>
。我可以通过致电
console.log(fileDialogDCM.fileUrls[i])
因此,我希望考虑的QList不为空。考虑我在QML中的菜鸟,我在做什么错? 这是最小的非工作示例:
FileDialog {
id: fileDialogDCM
selectMultiple: true
}
Button {
id: loadDCM
text: qsTr("Load DCM")
property var aListOfPlans: fileDialogDCM.fileUrls
onClicked: {
for(var i=0; i<4; i++) {
console.log(aListOfPlans[i])
} //writes URLs of first 4 selected plans
console.log(aListOfPlans.count) //gives undefined
}
}
非常感谢
答案 0 :(得分:0)
我想知道您期望从代码中得到什么。您是否不认为必须先打开FileDialog
才能打印出选定的网址?而且根本没有list.count
属性。
我想应该是这样的:
FileDialog {
id: fileDialogDCM
selectMultiple: true
onAccepted: {
for(var i = 0;i < fileDialogDCM.fileUrls.length;i ++)
{
console.log(fileDialogDCM.fileUrls[i]);
}
}
}
Button {
id: loadDCM
text: qsTr("Load DCM")
onClicked: {
fileDialogDCM.visible = true;
}
}
请参考Qt的出色文档/示例,而不是发明/实施正确方法的想法。
答案 1 :(得分:0)
当然,我在FileDialog上调用open,但是考虑到它很明显,所以我没有在示例中包括它。
MenuItem {
text: qsTr("Import DCM")
onTriggered: {
fileDialogDCM.open()
console.log("[INFO] Import DCM triggered")
}
}
但是,我找到了解决方案(或意识到了真正的问题所在)。 我使用的是.count(未定义的数字)而不是.legth(给出的数字)