Russian Qt Forum
Ноябрь 25, 2024, 08:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача модели С++ в qml и доступ к пропертям  (Прочитано 2149 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« : Август 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]
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #1 : Август 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]

И так на все проперти
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Август 02, 2023, 10:42 »

в делегат добавь required property, которые доступны из модели

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #3 : Август 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]
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Август 02, 2023, 14:07 »

все роли надо объявлять у делегата как property (обычно их делают required) и обращаться к ним как к свойствам делегата, а не model. https://doc.qt.io/qt-6/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel-subclass (это же применимо и к моделям, созданным прямо в QML)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #5 : Август 03, 2023, 11:16 »

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

Да, вот вчера вечермо нашел это решение, и как оказалось оно единственное. Но это решенеи очень смахивает на магию.
Странное решение, но оно рабочее.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Август 03, 2023, 13:05 »

рантайм всё прокидывает за нас. к тому же, у нас тут декларативный язык, магия в нем вообще повсюду Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.