Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何访问通过加载程序加载的qml页面的公共属性?_Qt_Qml_Loader_Qt Quick - Fatal编程技术网

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

Qt 如何访问通过加载程序加载的qml页面的公共属性?,qt,qml,loader,qt-quick,Qt,Qml,Loader,Qt Quick,AA.qml main.qml Item { id: drawLinesOnC property string lineColour property int lineDrawingSourceType property variant startEndPointArray } - 如何访问通过Loader加载的AA.qml页面的公共属性drawLineLoaderA?解决方案如下: Loader { id:

AA.qml

main.qml

Item
{
    id:             drawLinesOnC

    property string  lineColour
    property int     lineDrawingSourceType
    property variant startEndPointArray

}
-


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

解决方案如下:

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

除了@TheIndependentQuarius所说的之外,您还可以在加载程序中声明相应类型的属性:

drawLineLoaderA.source = "DrawLineLoader.qml"
if (drawLineLoaderA.status == Loader.Ready)
{
    if (drawLineLoaderA.item && drawLineLoaderA.item.lineColour)
    {
        drawLineLoaderA.item.lineColour            = "black"
        drawLineLoaderA.item.lineDrawingSourceType = 2 
    }
}
然后像这样使用它:

Loader {
    id: drawLineLoaderA
    readonly property AA aa: item
    source: "AA.qml"
}
现在,您清楚地声明您处理的是AA类型的物品,而不是其他类型的物品,您将获得加载物品属性的自动完成作为奖励


注1:加载项属性的配置应在AA.qml本身(默认值)或加载程序的已加载处理程序中完成,如@troyane所建议


注意2:在AA.qml中声明了
属性字符串linecolor
。您可能对
color
QML类型感兴趣。如果您声明
属性颜色linecolor
,QML将检查您是否为此属性指定了有效值。此外,颜色< /COD>值在传递到C++时自动转换为QCORE(当然,从QCuffice中通过C++时当然是)。首先,在加载程序的
onload
中执行所有赋值。其次,通过执行
if(drawLineLoaderA.item&&drawLineLoaderA.item.linecolor){…}
重新检查项目是否具有各自的属性。您可以将其添加到答案中
if (drawLineLoaderA.aa) {
    drawLineLoaderA.aa.color = "black"
}