我有一个Rectangle
的qml文件。我想从C ++后端触发onClicked( )
。
那么,如何在C ++ / Qt后端访问QML组件引用?
答案 0 :(得分:1)
您应该使用QObject::findChild()
来定位对象,并像调用标称方法一样调用信号。
但是有一个问题,因为QQuickRectangle
本身就是一个私有类,所以它不能直接在C ++ API中使用。此外,它没有真正的clicked()
信号,除非您自己实施。如果你这样做了,它就不会成为C ++界面的一部分。
此外,没有onClicked()
信号,信号为clicked()
,onClicked:
是处理程序挂钩。
但是,您仍然可以使用Qt元系统发出它,只需使用:
QObject * object = engine.rootObjects().at(0)->findChild<QObject *>("yourObjectName");
if (object) QMetaObject::invokeMethod(object, "clicked");
即使信号在QML端实现,它也能工作,即使没有强制转换为具体的C ++类型,它也能工作。
现在,如果你的对象不是直接在根对象树中,你将无法找到它,除了将它的引用从QML端传递给C ++槽或可调用函数之外别无选择。 / p>