首页 > 解决方案 > fileDialogDCM.fileUrls.count 给出“未定义”(QML)

问题描述

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 
    }
}

非常感谢

标签: qtqmlfiledialog

解决方案


我想知道你希望在你的代码中得到什么。您不认为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 的优秀文档/示例,而不是发明/实施您对正确方法的想法。


推荐阅读