QWebChannelを使用してQtWebKitからQtWebEngineに移行します。QWebChannel経由でJavascriptで文字列として認識されるQByteArray
QVariantオブジェクトをJavascriptに送信する呼び出し可能な関数があります。これはJSONオブジェクトとみなされます。私QByteArrayがされていない(QString
がstring
なるように、QWebChannelなしQtWebKitを使用するなどQInt
int
、
は、QByteArrayはUint8ClampedArray
と見られていたが、現在は直接UTF-8を使用してstring
に変換されます。 ()
私が何か間違ったことをしました、私はここで
何をすべき関連するコードの一部です:??を
//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と解釈されていますが、これは何もできません。