2015-06-05 14 views
6

Se ho unIn che cosa viene convertito QByteArray in QML?

signal: 
    void foo(QByteArray data); 

E in QML ho gestirlo:

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

Qual è il tipo di dati in QML? Che metodi ha? Non sembra essere una stringa javascript - non ha nemmeno uno .length e nessun .charCodeAt(). Ma anche non sembra essere un QByteArray - no .at(). data[0] è undefined! È .toString().

Come accedere ai suoi contenuti? Per esempio. se è un uint32_t a quattro byte, come posso ottenere quel numero in una variabile javascript?

+0

Sembra che ci sia qualche sviluppo nell'ottenere QByteArray nella conversione di ArrayBuffer. Da quando è stato fuso solo pochi giorni fa probabilmente dovremo aspettare fino a Qt 5.8. https://codereview.qt-project.org/#/c/144761/ – pwuertz

risposta

3

Secondo http://doc.qt.io/qt-5/qtqml-cppintegration-data.html e la sorgente corrente http://code.woboq.org/qt5/qtdeclarative/src/qml/compiler/qqmltypecompiler.cpp.html#567, non c'è conversione tra QByteArray verso QML. Probabilmente otterrai un oggetto opaco, non accessibile in JS.

+0

Ok suppongo che dovrò creare il mio tipo basato su QObject per avvolgere un QByteArray. – Timmmm

+2

Si prega inoltre di aggiungere un suggerimento nel bugtracker per aggiungere una mappatura per QByteArray. Potrebbe essere supportato da un array JS di alcuni tipi. – peppe

0

Come affermato in here:

Il motore QML fornisce conversione automatica tra QByteArray valori e oggetti JavaScript ArrayBuffer.

Questa funzione è disponibile da Qt 5.8.

Problemi correlati