C++ / QML - przejście z wektorem punktów

0

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.

0

a nie możesz tak samo jak double, tylko zamiast double dać ten typ? bo tak chyba najlepiej

0

Próbowałem tak, ale nie przechodzi.

dla double

QVariant::fromValue(QList<double>::fromVector(QVector<double>() << 1)); // OK
/*
  przejscie z QVector<double> -> QList<double> -> QVariant
*/

dla QPointF

QVariant::fromValue(QList<QPointF>::fromVector(QVector<QPointF>() << QPointF(1, 2))); // nie dziala
/*
  przejscie z QVector<QPointF> -> QList<QPointF> -> QVariant
*/

Musi być tak:

 ???
/*
  przejscie z QVector<QPointF> -> QList<QPointF> -> QList<QVariant> -> QVariant
*/

1 użytkowników online, w tym zalogowanych: 0, gości: 1