Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Q_属性通过QWebChanel传递自定义对象_C++_Qt - Fatal编程技术网

C++ 使用Q_属性通过QWebChanel传递自定义对象

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()) {}

您可以在javascript中使用Q_属性和QWebChannel访问自定义类型吗

我已经有一个类暴露在我的javascript应用程序中,使用QWebChannel,但我似乎无法访问它的自定义类型属性、QString、Int等

例如:

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,并在读/写方法中对我的对象进行转换。