Tim*_*mmm 6 javascript qt qml qbytearray
如果我有
signal:
void foo(QByteArray data);
Run Code Online (Sandbox Code Playgroud)
在QML中我处理它:
onFoo: {
console.log(data.toString());
}
Run Code Online (Sandbox Code Playgroud)
QML中的数据类型是什么?它有什么方法?它似乎不是一个javascript字符串 - 它甚至没有.length,而且没有.charCodeAt().但它似乎也不是QByteArray- 不.at().data[0]是undefined!它确实有.toString().
我如何访问其内容?例如,如果它是一个四字节uint32_t,我如何将该数字转换为javascript变量?
根据http://doc.qt.io/qt-5/qtqml-cppintegration-data.html和当前源http://code.woboq.org/qt5/qtdeclarative/src/qml/compiler/qmltypecompiler.cpp .html#567,QByteArray 到 QML 之间没有转换。您可能会在 JS 中得到一个不透明的、无法访问的对象。
编辑:上述情况在 Qt 5.8 之前都是正确的。5.8 添加了 QByteArray 和 JS Array 之间的转换,请参见其他答案。
不用说:在撰写本文时,您想要使用的唯一版本是 >= 5.12。