[Interest] C++/QML Sequence Type to JavaScript Array

Максим Бесчеревных bma at ro.ru
Thu Feb 18 10:01:14 CET 2016


In docs http://doc.qt.io/qt-5/qtqml-cppintegration-data.html mentioned:

"Certain C++ sequence types are supported transparently in QML as JavaScript Array types.
In particular, QML currently supports:
    QList<int>
    QList<qreal>
    QList<bool>
    QList<QString> and QStringList
    QList<QUrl>
Other sequence types are not supported transparently, and instead an instance of any other sequence type will be passed between QML and C++ as an opaque QVariantList."

Looks like that "opaque conversion" doesn't work:

    class MyData : public QObject {
	Q_OBJECT
	Q_PROPERTY(QList<QGeoCoordinate> path READ path WRITE setPath NOTIFY pathChanged)
    public:
	QList<QGeoCoordinate> path() {
		return _path;
	}
    ...

MyData object filled with some data and exposed as context property to QML. At QML i imported QtPositioning, so QGeoCoordinate refers to coordinate QML basic type, but
    console.log(myData.path) prints QVariant(QList<QGeoCoordinate>) 
    console.log(myData.path) prints undefined
- there is no sequence, no length.

Is it possible to expose QList<Type> sequence to QML, where Type known by meta object system and refers to QML basic type provided by an QtQuick module?
I know that i can expose C++ property of type QVariantList , but what is that opaque conversion mentioned in docs.

Maxim Beschecherevnykh


More information about the Interest mailing list