gpt4 book ai didi

c++ - 我怎样才能得到 QObject 的 child ?

转载 作者:行者123 更新时间:2023-11-28 04:52:48 24 4
gpt4 key购买 nike

我正在尝试获取 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()
}

关于c++ - 我怎样才能得到 QObject 的 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com