繁体   English   中英

如何在Qt中使用QWebChannel发送QJsonObject

[英]How send a QJsonObject using QWebChannel in Qt

我使用QWebChannel在Qt中实现了HTML包装器,并且能够成功发送字符串,但是,我想发送QJsonObject,而不是像“ {a:1,b:2}”这样的json字符串,而是发送Qt QJsonObject。 可能吗?

官方文件说

“无需手动传递消息和对数据进行序列化”, http://doc.qt.io/qt-5/qwebchannel.html

如何使用JsonObject而不是字符串发出信号?

这是我的QWebChannel连接类

class Mapa : public QObject{
    Q_OBJECT

    public:
        explicit Mapa();
        displayMessage(const QString &message);
    signals:
        updateText(const QString &text); // success :sends text
        updateJson( const QJsonObject   &json); // fail: sends null
        updateJsond(const QJsonDocument &jsondoc);// fail: sends null
    }
 }

这是我的主要代码

Mapa map;
// setup the channel
QWebChannel channel;
QObject::connect(&clientWrapper, &WebSocketClientWrapper::clientConnected, &channel, &QWebChannel::connectTo);

// setup the dialog and publish it to the QWebChannel
channel.registerObject(QStringLiteral("map"), &map);

map.updateText("text");// sends "text" string

QJsonObject j;
j["Altitude"]  = 10;

map.updateJson(j); // sends "null" string
QJsonDocument doc(j);
map.updateJsond(doc); // sends "null" string

您可以将QVariant对象发送到Javascript代码,而不必使用QJson系列对象

  • QJsonObject = QVariantMap
  • QJsonArray = QVariantList

您可以轻松使用.toVariantMap().toVariantList()方法从JSON对象转换您的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM