C++ 使用Q_属性通过QWebChanel传递自定义对象
您可以在javascript中使用Q_属性和QWebChannel访问自定义类型吗 我已经有一个类暴露在我的javascript应用程序中,使用QWebChannel,但我似乎无法访问它的自定义类型属性、QString、Int等 例如:C++ 使用Q_属性通过QWebChanel传递自定义对象,c++,qt,C++,Qt,您可以在javascript中使用Q_属性和QWebChannel访问自定义类型吗 我已经有一个类暴露在我的javascript应用程序中,使用QWebChannel,但我似乎无法访问它的自定义类型属性、QString、Int等 例如: class MyData { public: MyData() = default; MyData(const QJsonObject &json): a(json["a"].toString()), b["b"].toInt()) {}
class MyData {
public:
MyData() = default;
MyData(const QJsonObject &json): a(json["a"].toString()), b["b"].toInt()) {}
QString a = "hello",
int b = 4
}
Q_DECLARE_METATYPE(MyData);
class MyService: public QObject {
Q_OBJECT
Q_PROPERTY(MyData myData READ getMyData WRITE setMyData);
}
javascript将类似于:
//read returns null :(
var myData = window.MyService.myData;
//write setter called, but with default values instead of these
window.MyService.myData = { a = "some string", b = 232 }
在javascript中,读取值返回null,写入值只是默认值
这可能吗?您考虑过做事的顺序吗?因为您确实记得C++中的所有东西在使用之前都必须声明。您可以在JSUSEQJSONObjut.Outlook中演示如何使用它。我告诉过您,您忘记MyDATA并使用QJSONoObjuttok,我想没有对象-JSON魔法,因此,我必须将Q_属性设置为QJsonObject,并在读/写方法中对我的对象进行转换。