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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: использование QStandardItemModel в qml  (Прочитано 4248 раз)
BlackSoul
Гость
« : Май 20, 2012, 14:38 »

Доброго времени суток всем.
возникла такая проблемка:

в С++ создается модель QStandardItemModel.
хочется отобразить её через qml.

в qml я пишу:
Код:
property QtObject data_model: controller.getInstance( "main_window" ).model() // контоллер - это объект, который возвращает указатель на с++ объект

Component
{
      id: data_delegate
      Text
     {
           text: display
     }
}

ListView
{
     id: data_view
     model: data_model
     delegate: data_delegate
}

этот код отлично отображает значение первой колонки модели, но что делать, если в моделе 2+ колонок - непонятно.
в доках есть примеры с наследованием модели и указанием roleNames, но как-то не хочется постоянно наследоваться =(

можно ли как-нибудь добраться из делегата к остальным колонкам?
« Последнее редактирование: Май 20, 2012, 21:13 от BlackSoul » Записан
Странник
Гость
« Ответ #1 : Май 21, 2012, 02:15 »

когда я последний раз касался этого вопроса, другого способа не было. интересно, с чем связаны такие костыли при реализации.
Записан
BlackSoul
Гость
« Ответ #2 : Май 21, 2012, 07:59 »

костыли связаны с тем, что 95% всего кода написано на С++. на qml только отображение и интерфейсная логика
Записан
Patrin Andrey
Гость
« Ответ #3 : Май 21, 2012, 08:56 »

Как сделать такое для QStandardItemModel без использования roleNames х.з.
Можно хранить объекты в QList<QObject*> someName и экспортировать через
setContextProperty("modelName", QVariant::fromValue(someName))
тогда в qml будет возможность обращаться к свойствам элементов по имени.
Однако, чтобы обновить данные в такой модели, придётся снова делать setContextProperty. Не советую использовать этот метод для динамически меняющижся списков.
Записан
BlackSoul
Гость
« Ответ #4 : Май 21, 2012, 09:10 »

тогда этот вариант тоже не подходит. т.к. следующая задача - синхронизация =(
Записан
BlackSoul
Гость
« Ответ #5 : Май 23, 2012, 08:52 »

Всё равно пришлось наследоваться =(
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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