QML:从C ++中的非可视项访问父项

时间:2015-02-18 04:16:50

标签: c++ qml qtquick2

在我的应用程序中,我有一个从QObject派生的自定义项。在指定的时刻,我需要访问其父级。但由于此项目不是QQuickItem后代,因此此处没有parentItem()

QML:

Item {
    id: root
    MyItem {
        id: myitem
    }
}

C ++

class MyItem : public QObject {
public:
    explicit MyItem(QObject *parent = 0) {
        // parent is always NULL here
    }
}

所以我的问题 - 如何在C ++中访问非可视化QML项目的父项?

1 个答案:

答案 0 :(得分:2)

据我所知,无法从MyItem构造函数访问父项。 QML首先构造对象,然后将其parent属性设置为QML层次结构中的相应项。

但是,在构造对象之后,调用QObject::parent方法将给出您期望的结果。到调用Component.onCompleted时,将设置父级。您可以使用该处理程序中的父数据完成对象初始化。