AA.qml
Item
{
id: drawLinesOnC
property string lineColour
property int lineDrawingSourceType
property variant startEndPointArray
}
main.qml
Loader
{
id: drawLineLoaderA
source: "AA.qml"
}
-
如何访问通过Loader AA.qml
加载的drawLineLoaderA
页面的公共属性?
答案 0 :(得分:4)
解决方案如下:
drawLineLoaderA.source = "DrawLineLoader.qml"
if (drawLineLoaderA.status == Loader.Ready)
{
if (drawLineLoaderA.item && drawLineLoaderA.item.lineColour)
{
drawLineLoaderA.item.lineColour = "black"
drawLineLoaderA.item.lineDrawingSourceType = 2
}
}
答案 1 :(得分:1)
除了@TheIndependentAquarius所说的,你可以在你的装载机中声明相应类型的属性:
Loader {
id: drawLineLoaderA
readonly property AA aa: item
source: "AA.qml"
}
然后像这样使用它:
if (drawLineLoaderA.aa) {
drawLineLoaderA.aa.color = "black"
}
现在你明确表示你处理AA类型的项目,而不是其他项目,并且你将自动完成已加载项目的属性作为奖励。
注1 :加载项的属性配置应该在AA.qml本身(默认值)或在Loader的onLoaded处理程序中完成,如@troy所建议的那样。
注意2 :在您的AA.qml中,您声明了property string lineColour
。您可能对color
QML类型感兴趣。如果您声明property color lineColour
,QML将检查您是否为此属性分配了有效值。此外,color
值在传递给C ++时会自动转换为QColor(当然,当从C ++传递时,来自 QColor)。