Qt 如何访问通过加载程序加载的qml页面的公共属性?
AA.qml main.qmlQt 如何访问通过加载程序加载的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:
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将检查您是否为此属性指定了有效值。此外,onload
中执行所有赋值。其次,通过执行if(drawLineLoaderA.item&&drawLineLoaderA.item.linecolor){…}
重新检查项目是否具有各自的属性。您可以将其添加到答案中
if (drawLineLoaderA.aa) {
drawLineLoaderA.aa.color = "black"
}