Migrazione da QtWebKit a QtWebEngine, utilizzando QWebChannel.QByteArray visto come una stringa in Javascript tramite QWebChannel
Ho una funzione invokable che invia un oggetto QVariant al Javascript, che è visto come un oggetto JSON. Quindi un QString
diventa string
, un QInt
un int
, ecc
Utilizzando QtWebKit senza QWebChannel, un QByteArray è stato visto come un Uint8ClampedArray
, ma ora è direttamente trasformato in un string
usando UTF-8 (che il mio non è QByteArray:()
ho fatto qualcosa di sbagliato Cosa devo fare
Ecco la parte codice rilevante:??
//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
dovrebbe contenere un array bloccato (dati msgpack) che decodificherò in seguito. Ora ho un brutto string
di caratteri non UTF-8 interpretati come UTF-8, che non posso fare nulla con.