首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Qt中使用QJsonObject发送QWebChannel

如何在Qt中使用QJsonObject发送QWebChannel
EN

Stack Overflow用户
提问于 2016-01-20 13:32:28
回答 1查看 1.8K关注 0票数 2

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

官方文件上说

“不需要手动传递和序列化数据,”http://doc.qt.io/qt-5/qwebchannel.html

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

这是我的QWebChannel连接类

代码语言:javascript
复制
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
    }
 }

这是我的主要代码

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-03 16:15:51

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

  • QJsonObject = QVariantMap
  • QJsonArray= QVariantList

您可以很容易地使用.toVariantMap().toVariantList()方法从JSON对象转换对象。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34901458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档