Qt 5:读取加载器中的属性



如何在Qt5 QML Quick 2.0中读取位于加载器对象内部的属性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 )
}

类型错误: 无法读取未定义的属性"超时"

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

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

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

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

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

根据官方文档,您应该执行以下操作:

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

相关内容

  • 没有找到相关文章

最新更新