Witam!
Potrzebuję "przesłać" wektor punktów do kodu z qml.
Jeśli chodzi o sam wektor double to robię to tak:
Fragment klasy:
Q_PROPERTY(QVariant toVariant READ toVariant NOTIFY toVariantChanged)
// przykladowy wektor z danymi
QVector<double> toVector(){
return QVector() << 1 << 2 << 3;
}
QVarinat toVariant(){
return QVariant::fromValue(QList<double>::fromVector(toVector()));
}
// ... //
Main:
MYClass myClass;
viewer.rootContext()->setContextProperty("myClass", &myClass);
QML:
Item {
property variant data: myClass.toVariant
onDataChanged: {
console.log('length ' + data.length )
console.log('First value ' + data[0])
}
}
Teraz chcę przerobić kod, by wektor był z punktami QPointF.
Powyższy kod by działał, lecz trzeba dodatkowo zrobić pewną konwersję, a całość musi wyglądać tak:
QVector<QPointF>
|
V
QList<PointF>
|
V
QList<QVariant>
|
V
QVariant
Aktualnie zrobiłem to tak:
QVariant toVariant(){
QVariantList list;
QVector<QPointF> points = toVector(); // toVector zwraca QVector<QPointF>
for(int i=0; i<points.length(); ++i)
list << QVariant(points[i]);
return list;
}
Jak najlepiej to zrobić?
Przepraszam za ewentualne literówki, kody pisałem z palca.