Что такое 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.