我正在尝试使A QObject
类的孩子添加他们的数据并将其数据添加到父(请参见下面的QML示例)。但是,当我在构造函数中调用以下代码时,它不会返回孩子。看来儿童名单尚未被人口组成。如果我在paint()
函数中放置相同的代码,它可以工作,但是我需要的数据早于此。
MultiGauge::MultiGauge() :
QQuickPaintedItem()
{
QObjectList children = this->children();
for (int i = 0; i < children.length(); i++)
{
this->myQList.append(children[i]->metaObject()->className());
}
}
这是QML文件
MultiGauge {
height: 125
width: height
Limits {
min: 0
caution: 1250
max: 2000
}
Limits {
min: 100
caution: 200
max: 300
}
}
编辑:解决方案:
MultiGauge::componentComplete()
{
// must call the parent's version of the function first
QQuickPaintedItem::componentComplete();
// now we can do what we need to
QObjectList children = this->children();
for (int i = 0; i < children.length(); i++)
{
this->myQList.append(children[i]->metaObject()->className());
}
}
您应该延迟迭代,直到QML对象树完成。您可以使用
MultiGauge {
// ...
Component.onCompleted: doSomeStuff()
}