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

QML: access parent from non-visual item in C++

本文关键字:可视化 访问 C++ QML      更新时间:2023-10-16

在我的应用程序中,我有一个从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项的父项?

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

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