admin管理员组文章数量:1335124
I have a method in C++ that expects an object:
Q_INVOKABLE void sendValue (const MyClass &value);
I'd like to call this method from qml, inside a javascript function, like this:
MyApi.sendValue({
"one":"one",
"two":2.0,
"three": false,
"four": [ 5, 6 ],
}
});
MyClass is defined as follows:
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QString>
#include <QVariant>
class MyClass {
QString one;
double two;
bool three;
int four[10];
public:
MyClass();
~MyClass();
// getters, setters, etc.
};
Q_DECLARE_METATYPE(MyClass)
#endif // MYCLASS_H
In main.cpp, MyClass is registered with qRegisterMetaType<MyClass>();
But none of the setters gets called, only MyClass' default constructor.
I have a method in C++ that expects an object:
Q_INVOKABLE void sendValue (const MyClass &value);
I'd like to call this method from qml, inside a javascript function, like this:
MyApi.sendValue({
"one":"one",
"two":2.0,
"three": false,
"four": [ 5, 6 ],
}
});
MyClass is defined as follows:
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QString>
#include <QVariant>
class MyClass {
QString one;
double two;
bool three;
int four[10];
public:
MyClass();
~MyClass();
// getters, setters, etc.
};
Q_DECLARE_METATYPE(MyClass)
#endif // MYCLASS_H
In main.cpp, MyClass is registered with qRegisterMetaType<MyClass>();
But none of the setters gets called, only MyClass' default constructor.
1 Answer
Reset to default 8You can send javascript objects to c++ from qml via QVariantMap
and javascript array with QVariantList
. It also goes the other way, you can send javascript object to qml using QVariantMap
from c++. Just make your function in c++ Q_INVOKABLE
or a slot and have the parameter be QVariantMap
, and convert that QVariantMap
into MyClass {}
.
See http://doc.qt.io/qt-5/qtqml-cppintegration-data.html for details (search for QVariantList and QVariantMap to JavaScript Array and Object).
本文标签: How to send javascript object to C from qmlStack Overflow
版权声明:本文标题:How to send javascript object to C++ from qml? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742349469a2458195.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论