Что такое QByteArray преобразуется в QML?

если у меня есть

signal:
    void foo(QByteArray data);

и в QML я справляюсь с этим:

 onFoo: {
     console.log(data.toString());
 }

каков тип данных в QML? Какие у него методы? Это не похоже на строку javascript - у нее даже нет .length, а не .charCodeAt(). Но это также не похоже на QByteArray - нет .at(). data[0] is undefined! Это тут есть .toString().

как получить доступ к его содержимому? Е. Г. если это четырехбайтовое uint32_t, как я могу получить это число в переменная javascript?

2 ответов


согласно http://doc.qt.io/qt-5/qtqml-cppintegration-data.html и источник токаhttp://code.woboq.org/qt5/qtdeclarative/src/qml/compiler/qqmltypecompiler.cpp.html#567, между QByteArray и QML нет преобразования. Вы, вероятно, получите непрозрачный, непостижимый объект в JS.


Как говорится в здесь :

двигатель QML обеспечивает автоматическое преобразование типа между QByteArray значения и объекты JavaScript ArrayBuffer.

эта функция доступна с Qt 5.8.