Russian Qt Forum

Qt => Qt Quick => Тема начата: SektorCT от Август 02, 2023, 09:37



Название: Передача модели С++ в qml и доступ к пропертям
Отправлено: SektorCT от Август 02, 2023, 09:37
Всем првиет.
Такой вопрос, кто и как в Qt6.5 передает модели в qml? Главное проблема доступа к ролям в модели. ворненги сыпет про ресолв данных.
Вот например в репитор передача модели:
Код:
Repeater
        {
            id: repeaterValueText
 
            model: pelData.gaugeDataModel
            anchors.fill: parent
 
            delegate: Label
            {
                height: model.eMaxPixelsHeightText
                width: model.eMaxPixelsWidthText
                color: model.eValueTextColor
                text: model.eScaleValue
                font.pixelSize: model.eValueTextSize
                antialiasing: true
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                x: model.eValueTextCenterX - model.eCenterTextValueRect.x
                y: model.eValueTextCenterY - model.eCenterTextValueRect.y
            }
        }

Почти все ворненги выглядят вот так
'Label' is used but it is not resolved [unresolved-type]


Название: Re: Передача модели С++ в qml и доступ к пропертям
Отправлено: SektorCT от Август 02, 2023, 09:39
Или вот такие
Binding assigned to "pixelSize", but no property "pixelSize" exists in the current element. [missing-property]
Binding assigned to "x", but no property "x" exists in the current element. [missing-property]

И так на все проперти


Название: Re: Передача модели С++ в qml и доступ к пропертям
Отправлено: kambala от Август 02, 2023, 10:42
в делегат добавь required property, которые доступны из модели

или это свойства именно самой модели, а не элемента модели?


Название: Re: Передача модели С++ в qml и доступ к пропертям
Отправлено: SektorCT от Август 02, 2023, 13:32
в делегат добавь required property, которые доступны из модели

или это свойства именно самой модели, а не элемента модели?

все что начинается с буквы 'e' на подобии eMaxPixelsHeightText это все роли модели. А то что с двлоеточием это уже свойства самого Label
вот такие еще ворненги есть.
Код:
    Unqualified access [unqualified]
    Could not compile binding for strokeColor: Cannot access value for name model [compiler]
    Unqualified access [unqualified]
    Could not compile binding for strokeWidth: Cannot access value for name model [compiler]
    Unqualified access [unqualified]
    Could not compile binding for startX: Cannot access value for name model [compiler]
    Unqualified access [unqualified]
    Could not compile binding for startY: Cannot access value for name model [compiler]
    Unqualified access [unqualified]
    Could not compile binding for x: Cannot access value for name model [compiler]
    Unqualified access [unqualified]
    Could not compile binding for y: Cannot access value for name model [compiler]
    Member "gaugeDataModel" not found on type "QObject" [missing-property]


Название: Re: Передача модели С++ в qml и доступ к пропертям
Отправлено: kambala от Август 02, 2023, 14:07
все роли надо объявлять у делегата как property (обычно их делают required) и обращаться к ним как к свойствам делегата, а не model. https://doc.qt.io/qt-6/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel-subclass (это же применимо и к моделям, созданным прямо в QML)


Название: Re: Передача модели С++ в qml и доступ к пропертям
Отправлено: SektorCT от Август 03, 2023, 11:16
все роли надо объявлять у делегата как property (обычно их делают required) и обращаться к ним как к свойствам делегата, а не model. https://doc.qt.io/qt-6/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel-subclass (это же применимо и к моделям, созданным прямо в QML)

Да, вот вчера вечермо нашел это решение, и как оказалось оно единственное. Но это решенеи очень смахивает на магию.
Странное решение, но оно рабочее.


Название: Re: Передача модели С++ в qml и доступ к пропертям
Отправлено: kambala от Август 03, 2023, 13:05
рантайм всё прокидывает за нас. к тому же, у нас тут декларативный язык, магия в нем вообще повсюду :)