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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как добраться до значения роли вне делегата?  (Прочитано 2827 раз)
RustAlex
Гость
« : Май 06, 2016, 00:34 »

Добрый день.
Несколько раз сталкивался с проблемой, все время как-то обходил, но должно быть решение "в лоб"!
ПРоблема:

НЕ могу получить доступ к роли определенной в с++ из QML, кроме как из делегата

Код
/* MyList.qml  */
ListView {
 model: myModel
 delegate: MyDelegate{}
}
 

Файл делегата:
Код
/* MyDelegate.qml*/
Item {
 text: strValue // poluchayu znachenie!!!
}
Другой QML файл:
Код
ProprietaryQml {
 MyList {
   id: usedMyList
 }
 
   onPressed: {
    myFunc(usedMyList.delegate.strValue); // parametr undefined
 }
 
}
При этом модель определена в С++, это может быть модель например на базе QSqlQueryModel или QSortFilterProxyModel
в котором определена роль strValue.

Как заставить usedMyList.delegate.strValue - получать значение?
property alias или property string  - видимо надо как-то правильно определить в нужной области видимости. В трех соснах блуждаю. Help!
Если нужно покажу как подключаю модель...
Записан
Отражение луны
Гость
« Ответ #1 : Май 06, 2016, 12:27 »

Обычно для этого существуют методы самой модели. Например, у ListModel есть соотвествующие cound, get и set.
Реализуй на уровне c++  (методы должны быть Q_INVOKABLE) и ты сможешь использовать их через model_id.method();

Но тут еще возникает логичный вопрос - а зачем?
« Последнее редактирование: Май 06, 2016, 13:19 от Komorebi » Записан
RustAlex
Гость
« Ответ #2 : Май 10, 2016, 12:58 »

Спасибо! Реализация в модели метода с Q_INVOKABLE  - решила проблему. Заодно вскрыв непраздный вопрос "зачем"... ведь уже был метод который решал параллельную проблему - его надо было просто слегка расширить, а не упираться в желание сделать все в QML.
Лишний раз убеждаюсь что не надо упираться в решение проблемы - показавшимся простым и правильным вначале. Иногда надо абстрагироваться от принятого изначально решения и взглянуть на проблему с иной стороны.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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