我在我的程序中使用了来自新QT5.3的QQuickWidget。我想在QML中从C++调用一个函数。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?或者,简单地说--我如何从QQuickWidget上下文中调用我的QQuickWidget函数?
发布于 2014-05-27 08:08:16
我们绝对不建议这样做,但您可以这样做:
Rectangle {
objectName: "myObj"
}然后从C++使用view->rootObject()->findChild<QObject *>("myObj");。
相反,请考虑使用另一种设计,例如,将javascript函数连接到C++对象通过Connections QML元素发出的信号。
发布于 2014-05-27 00:34:26
好吧,我找到答案了。
QObject *obj = quickWidget->rootObject();为我工作
https://stackoverflow.com/questions/23879140
复制相似问题