Qt 5:在Loader中读取属性

时间:2013-12-25 21:55:47

标签: qt qml qt5 qt-quick qtquick2

如何阅读Qt5 QML Quick 2.0中Loader对象内的属性timeout

import QtQuick 2.0

Rectangle {
    width: 100
    height: 100
    color: "black"

    property Component comp1 : Component {
        Rectangle {
            id: abc
            property int timeout: 5000
            width: 10; height: 10;
            color: "red"
        }
    }

    Loader {
        id: loader
        sourceComponent: comp1
    }

    Component.onCompleted: console.log( "timeout: " + loader.item.abc.timeout )
}
  

TypeError:无法读取未定义

的属性'timeout'

1 个答案:

答案 0 :(得分:4)

您的代码中存在一些问题,即:

1)您没有为组件对象分配id标识符。

2)您尝试使用此简单代码中不必要的属性继承Component

3)您没有为item元素正确使用Loader属性。

4)您指的是属性名称而不是Component的id。这又回到了不必要的继承。

基于official documentation,你应该做这样的事情:

import QtQuick 2.0

Rectangle {
    width: 100
    height: 100
    color: "black"

    Component {
        id: comp1
        Rectangle {
            id: abc
            property int timeout: 5000
            width: 10; height: 10;
            color: "red"
        }
    }

    Loader {
        id: loader
        sourceComponent: comp1
    }

    Component.onCompleted: console.log( "timeout: " + loader.item.timeout )
}