首页 文章

如何访问通过Loader加载的qml页面的公共属性?

提问于
浏览
4

AA.qml

Item
{
    id:             drawLinesOnC

    property string  lineColour
    property int     lineDrawingSourceType
    property variant startEndPointArray

}

main.qml

Loader
{
   id:     drawLineLoaderA
   source: "AA.qml"
}

如何访问通过Loader drawLineLoaderA 加载的 AA.qml 页面的公共属性?

2 回答

  • 1

    解决方案如下:

    drawLineLoaderA.source = "DrawLineLoader.qml"
    if (drawLineLoaderA.status == Loader.Ready)
    {
        if (drawLineLoaderA.item && drawLineLoaderA.item.lineColour)
        {
            drawLineLoaderA.item.lineColour            = "black"
            drawLineLoaderA.item.lineDrawingSourceType = 2 
        }
    }
    
  • 4

    除了@TheIndependentAquarius所说的,您可以在加载器中声明相应类型的属性:

    Loader {
        id: drawLineLoaderA
        readonly property AA aa: item
        source: "AA.qml"
    }
    

    然后像这样使用它:

    if (drawLineLoaderA.aa) {
        drawLineLoaderA.aa.color = "black"
    }
    

    现在你明确表示你处理AA类型的项目而没有其他项目,你将获得加载项目属性的自动完成作为奖励 .


    Note 1 :配置已加载项's properties should be done either in AA.qml itself (default values) or in Loader' s onLoaded处理程序,如@troy所建议的那样 .

    Note 2 :在您的AA.qml中,您声明了 property string lineColour . 您可能对 color QML类型感兴趣 . 如果声明 property color lineColour ,QML将检查您是否为此属性指定了有效值 . 此外,当传递给C时, color 值会自动转换为QColor(当然,当从C传递时,从QColor开始) .

相关问题