Russian Qt Forum

Qt => Model-View (MV) => Тема начата: SektorCT от Февраль 20, 2024, 22:43



Название: Передача из модели QAbstractListModel QList<QPointF> в qml
Отправлено: SektorCT от Февраль 20, 2024, 22:43
Всем привет.
У меня имеется в qml репитер для нескольких Shape, и чтоыб его нарисовать мне надо каждому передать лист QPointF
И может я что-то не так с этим листом делаю но у меня идет в консоли такой выпис
Код:
Could not find any constructor for value type QQmlPointFValueType to call with value QVariant(QVariantList, QList(QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492)), QVariant(QPointF, QPointF(300.451,51.5492))))
PathPolyline: path of type 26 not supported

Может кто подскажет как правильно лист точек передать репитеру?
Спасибо


Название: Re: Передача из модели QAbstractListModel QList<QPointF> в qml
Отправлено: kambala от Февраль 21, 2024, 10:09
покажи как ты в коде передаешь. судя по ошибке (constructor for ... QQmlPointFValueType to call with value ... QVariantList), ты пытаешься засунуть список точек туда, где ожидается лишь одна точка (не списочная)


Название: Re: Передача из модели QAbstractListModel QList<QPointF> в qml
Отправлено: SektorCT от Февраль 21, 2024, 12:04
покажи как ты в коде передаешь. судя по ошибке (constructor for ... QQmlPointFValueType to call with value ... QVariantList), ты пытаешься засунуть список точек туда, где ожидается лишь одна точка (не списочная)

Вы были правы, я вместо
Код:
required property list<point> ePoints
пытался подсунуть
Код:
required property point ePoints

Но все равно не моуг нарисовать обьект.
Вот так выглядит выпис в модели перед получением точек
Код:
list:  QVariant(QList<QPointF>, QList(QPointF(300.451,51.5492), QPointF(309.439,50.8578), QPointF(310.13,41.8697), QPointF(301.142,42.5611), QPointF(300.451,51.5492)))

А вот код в qml
Код:
Repeater
        {
            id: repeaterLimitShape

            model: root.pelData.gaugeLimitModel
            anchors.fill: parent

            delegate: Shape
            {
                id: delegateLimitShape

                required property list<point> ePoints

                anchors.fill: parent
                layer.samples: 8

                ShapePath
                {
                    id: trackShapeLimit

                    capStyle:    Qt.FlatCap
                    strokeColor: "red"
                    fillColor: "red"
                    strokeWidth: 1

                    Component.onCompleted:
                    {
                        console.log("ePoints: ", delegateLimitShape.ePoints)
                    }

                    PathPolyline
                    {
                        id: ppl

                        path: delegateLimitShape.ePoints

                    }
                }
            }
        }

Выпис в консоли выглядит вот так
Код:
qml: ePoints:  []

Тут я немного в растерянности.


Название: Re: Передача из модели QAbstractListModel QList<QPointF> в qml
Отправлено: kambala от Февраль 22, 2024, 12:02
смущает anchors.fill: parent

попробуй распечатать ePoints в Shape, а не в ShapePath

на уровне модели все правильно написано? может имя роли перепутал?


Название: Re: Передача из модели QAbstractListModel QList<QPointF> в qml
Отправлено: SektorCT от Февраль 26, 2024, 10:34
Все таки ошибка была с именами пропертей.