【发布时间】:2019-03-26 14:29:11
【问题描述】:
我想从 qml 中的 c++ 中“拉”数据,如下所示:
Component.onCompleted: {
MySettings.loadMainWindowPosition(aAppWnd.x, aAppWnd.y, aAppWnd.width, aAppWnd.height, aAppWnd.visibility);
}
当 MySettings 以下列方式注册时:
context->setContextProperty("MySettings", m_settings);
但是当我像这样制作函数签名时:
void MySettings::loadMainWindowPosition(int& x, int& y, int& width, int& height, int& visibility)
我收到以下错误:
qrc:/GUI/App.qml:35: 错误:未知方法参数类型:int&
那么如何正确地从 c++ 中“拉”到 qml 中的数据?
更新:
我解释得更好。现在我可以从 qml 调用 c++ 函数(并发送参数):
Component.onCompleted: {
MySettings.someFunc(111, 222);
}
在 c++ 代码中,我收到参数值为“111”和“222”的函数调用。
但我想在 c++ 中更改此参数。我想要那样的东西:
Component.onCompleted: {
var a;
var b;
MySettings.someFunc(a, b);
}
我想在 c++ 代码中将参数设置为“333”和“555”。所以在调用 MySettings.someFunc(a, b) 之后,我期望 (a==333) 和 (b==555)。
如何做到这一点?
【问题讨论】:
-
不能传引用,js不支持这种类型。请参阅here 了解更多信息。而是传递一个带有属性的对象,然后在 QML 中更新它。
-
@folibis 你能提供一些例子吗?我阅读了您的链接,但没有得到如何调用从 qml 中返回参数值的 c++ 函数:(
标签: c++ qt qml qt5 qqmlcomponent