我怎样才能得到一个QObject的孩子?



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

相关内容

  • 没有找到相关文章

最新更新