我在我的程序中使用新Qt 5.3中的QQuickWidget
。我想从C ++中调用QML
中的函数。
QML
文件非常简单:
import QtQuick 2.2
Rectangle {
width: 300
height: 300
color: "red"
function test() {
return 5;
}
}
C ++部分也非常简单:
QQuickWidget *quickWidget = new QQuickWidget(QUrl::fromLocalFile(filePath));
quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
QVariant returnedValue;
// here I need a reference to some QObject
QMetaObject::invokeMethod(obj, "test",Q_RETURN_ARG(QVariant, returnedValue));
我试过了:
没有任何帮助。 returnedValue
始终无效。
所以我的问题是 - 我怎样才能得到这个obj
?或者,简单来说 - 如何从QML
上下文调用我的QQuickWidget
函数?
答案 0 :(得分:3)
建议不要 这样做,但你可以这样做:
Rectangle {
objectName: "myObj"
}
然后从C ++使用view->rootObject()->findChild<QObject *>("myObj");
。
请考虑使用其他设计,例如通过Connections
QML元素将该javascript函数连接到从C ++对象发出的信号。
答案 1 :(得分:1)
好的,我找到了答案。
QObject *obj = quickWidget->rootObject();
适合我