QML对象初始化期间函数调用的顺序是否确定?

3

我有一个用于QML的C++插件,其中包含一些属性。我想知道以下QML代码中函数调用的顺序是否有相关文档:

MyCustomThing {
   propertyA: 20   // Will putting this line first guarantee A before B?
   propertyB: 30
}

在我的电脑上,事情发生的顺序与我期望的相反(在这种情况下是B先于A,即在QML中出现的最后一个是首先调用的),但如果能知道这在不同平台上是否一致,最好还有文档可以参考。

是否有任何文档指定QML对象构造期间函数调用的顺序?

谢谢!


在代码注释中,"width" 是什么意思? - MrEricSir
一个打字错误,抱歉。感谢您发现它,我已经编辑过了。 - spbots
2个回答

4

我想你希望在propertyApropertyB都被赋值为您的qml文件中声明的值时执行某些操作。

您可以重写QQuickItem::componentComplete。当所有属性都被设置为初始值时,它将被调用。只需不要忘记在覆盖方法的开头调用超类。

void MyCustomThingItem::componentComplete()
{
    QQuickItem::componentComplete();
    // continue initialization 
    myCustomInit(m_propertyA, m_propertyB); // guaranteed to be 20 and 30
}

编辑: QML的等效语句为:

MyCustomThing {
    propertyA: 20
    propertyB: 30
    Component.onCompleted: {
        myCustomInit(propertyA, propertyB); // 20, 30
    }
}

4
订单未定义,您不应该依赖它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接