【发布时间】:2016-08-24 09:10:58
【问题描述】:
使用 QWebChannel 从 QtWebKit 迁移到 QtWebEngine。
我有一个可调用函数,它将 QVariant 对象发送到 Javascript,它被视为 JSON 对象。所以QString 变成了string、QInt 和int,等等。
在没有 QWebChannel 的情况下使用 QtWebKit,QByteArray 被视为 Uint8ClampedArray,但现在使用 UTF-8 直接转换为 string(我的 QByteArray 不是:()
我做错了吗?我该怎么办?
这是相关的代码部分:
//Qt Window class signal to javascript
void MyWindow::uplink(Response msg)
{
emit _nativeToJs(msg->toJson());
}
//Response class toJson() method
QVariantMap Response::toJson() const
{
QVariantMap map;
map["id"] = m_id; //qulonglong
map["src"] = QString(m_src);
map["dst"] = QString(m_dst);
map["status"] = m_status; //qint16
map["result"] = m_result; //QVariant, can be a map of string, arrays, etc
return map;
}
//Javascript
var foo;
new QWebChannel(qt.webChannelTransport, function(channel) {
//we connect the signal
channel.objects.foo._nativeToJs.connect(function(msg){
//msg is now a JSON object
});
});
msg.result 应该包含一个我稍后解码的钳位数组(msgpack 数据)。现在我有一个丑陋的string 非 UTF-8 字符被解释为 UTF-8,我对此无能为力。
【问题讨论】:
标签: javascript qbytearray qtwebengine