我导出了C++
类和对象,如下所示:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/QQuickViewExample/main.qml"));
viewer.showExpanded();
//object export
ClassA classA(QString stuff);
QQmlContext* context = viewer.engine()->rootContext();
context->setContextProperty("_classA", &classA);
//class export
qmlRegisterType<ClassB>("CustomComponents", 1, 0, "ClassB");
return app.exec();
}
我将在其中嵌入QML
创建任意数量的ClassB
个对象。我希望每个ClassB
都有一个引用或指向此程序中存在的1 ClassA
的引用。当我在QML
个对象中初始化ClassA
时,我ClassB
如何获取QML
的引用,以便ClassB
可以使用ClassA
}}?
答案 0 :(得分:1)
您必须更改操作的顺序:
加载源,在那里实例化(根据需要多次):
B { aPtr: _classA }
理由是:
鉴于此,上面的步骤(1)和(2)实际上可以交换。
我相信有很多方法可以用C ++手工创建,父级和连接所有内容,但这可能是极端黑暗艺术的一个例子(想想从JS表达式手动创建绑定,创建上下文,然后将项目实例化到其中。 ..);从来没有在野外见过:)