如何将数据从 c++ "pull"到 qml?
How to "pull" data from c++ to qml?
我想在qml中从c ++中"拉取"数据,如下所示:
Component.onCompleted: {
MySettings.loadMainWindowPosition(aAppWnd.x, aAppWnd.y, aAppWnd.width, aAppWnd.height, aAppWnd.visibility);
}
当"我的设置"按以下方式注册时:
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++ 中更改此参数。我想要这样的 smth:
Component.onCompleted: {
var a;
var b;
MySettings.someFunc(a, b);
}
我想在 c++ 代码参数中设置为"333"和"555"。所以在调用MySettings.someFunc(a,b(之后,我期望(a==333(和(b==555(。
怎么做?
从 QML 调用C++函数时,不要尝试将返回值作为引用参数获取。请改用返回值。要在单个调用中传输多个值,请定义C++方法,例如
Q_INVOKABLE QVariantList someFunc() { ... }
并在 QML 中使用它
Component.onCompleted: {
var returnValues = MySettings.someFunc();
//access the returnValues via list indices here:
var a = returnValues[0];
var b = returnValues[1];
}
通过引用传递值不起作用,从 QML 调用 c ++ 函数。如果你想要同步调用,请在 c ++ 代码中使用一些链接:
QVariantList MySettings::someFunc(int a, int b){
QVariantList list;
list.append(a + 5); // edit the passed values here
list.append(b + 5); // edit the passed values here
return list;
}
在你的 QML 代码中像这样的东西:
var test = gapi.someFunc(3,2); // pass values here and get the new ones
console.log("The return data" + test);
相关文章:
- 从C++实例化QML
- 使用CMake创建QML插件
- 使用libgit2、c++进行pull
- QT通过C++添加映射QML项目
- 如何在没有信号的情况下从C++执行QML插槽
- QML按钮点击功能执行顺序
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 建议在运行时将带有类实例的列表从c++导入qml
- Qt Quick-如何仅从c++代码与qml属性交互
- 如何将带有自定义对象的容器从C++传递到QML
- QML 使用带有参数C++函数
- 最佳做法是从另一个线程访问 qml 中的Q_PROPERTY
- 如何从C++端挂接到 QML 项的 onClick 事件
- 在 qml 中使用 Q_ENUM 和 Q_PROPERTY 作为枚举类
- 从C++更改 QML 图像源
- QML TableView 使用 QtQuick.Controls 2 单击行
- 如何多次询问来自QML对话框的输入?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 阅读 QML 中结构C++ QVector 的 QVector
- 如何将数据从 c++ "pull"到 qml?