Qt 5:在Loader中读取属性

Dmi*_*try 6 qt qml qt-quick qt5 qtquick2

如何timeout在Qt5 QML Quick 2.0中读取位于Loader对象内的属性?

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 )
}
Run Code Online (Sandbox Code Playgroud)

TypeError:无法读取undefined的属性'timeout'

lpa*_*app 4

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

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 )
}
Run Code Online (Sandbox Code Playgroud)