Переход из QtWebKit в QtWebEngine с помощью QWebChannel.
У меня есть invokable функция, которая отправляет объект QVariant в Javascript, который рассматривается как объект JSON. Таким образом, QString
становится string
, a QInt
an int
и т.д.
Используя QtWebKit без QWebChannel, QByteArray рассматривался как Uint8ClampedArray
, но теперь напрямую преобразован в string
с использованием UTF-8 (для чего мой 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 data), который я позже декодирую. Теперь у меня есть уродливый string
не символ UTF-8, интерпретируемый как UTF-8, с которым я ничего не могу сделать.