QML对象初始化期间函数调用的顺序是否确定? 我有一个C++语言插件,它有一些属性,我想知道有没有一些关于下面QML代码中函数调用顺序的文档: MyCustomThing { propertyA: 20 // Will putting this line first guarantee A before B? propertyB: 30 }

QML对象初始化期间函数调用的顺序是否确定? 我有一个C++语言插件,它有一些属性,我想知道有没有一些关于下面QML代码中函数调用顺序的文档: MyCustomThing { propertyA: 20 // Will putting this line first guarantee A before B? propertyB: 30 },c++,qt,qml,C++,Qt,Qml,在我的机器上,事情发生的顺序与我预期的相反(在本例中,B在A之前,即QML中最后出现的任何内容都是第一个被调用的内容),但最好知道这在不同平台之间是否是一致的,并且最好在某个地方进行记录 在QML对象构造期间,是否有任何文档指定函数调用的顺序 谢谢 顺序未定义,您不应该依赖它。我假设当propertyA和propertyB都设置为qml文件中声明的值时,您希望执行某些操作 您可以覆盖。当所有属性都设置为初始值时,将调用它。只是别忘了在重写方法的开头调用超类 void MyCustomThingI

在我的机器上,事情发生的顺序与我预期的相反(在本例中,B在A之前,即QML中最后出现的任何内容都是第一个被调用的内容),但最好知道这在不同平台之间是否是一致的,并且最好在某个地方进行记录

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


谢谢

顺序未定义,您不应该依赖它。

我假设当
propertyA
propertyB
都设置为qml文件中声明的值时,您希望执行某些操作

您可以覆盖。当所有属性都设置为初始值时,将调用它。只是别忘了在重写方法的开头调用超类

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
    }
}

你在代码注释中的“宽度”是什么意思?对不起,是打字错误。谢谢你找到它,我已经编辑过了