Разбираюсь с моделями |
Здравствуйте, гость ( Вход | Регистрация )
Разбираюсь с моделями |
miksayer |
29.11.2009, 13:49
Сообщение
#1
|
Студент Группа: Участник Сообщений: 33 Регистрация: 18.1.2009 Пользователь №: 495 Спасибо сказали: 0 раз(а) Репутация: 0 |
Задача стоит такая: написать модель для QTreeView, которая представляла бы собой дерево из "мнимых" путей к файлам, т.е. этих файлов на самом деле нет на диске(поэтому QDirModel не катит), т.е. я добавляю туда несолько путей типа "/dir1/dir2/file", а модель строит мне из них дерево. Плюс ко всему должно быть три столбца, в первом должно быть имя папки\файла, а во втором и третьем чекбокс и комбобокс соответственно(причем их значения можно менять и у папок, и у файлов). Я начал разбираться с документацией и стандартным примером и сразу возникли вопросы:
1. Класс элемента там описан так:
Могу ли я вместо QList<QVariant> itemData; написать что-то вроде такого:
? т.е. можно использовать вместо списка структуру и работать с ней(что имхо более логично)? 2. Как мне правильно описать setData, который мне необходимо описать(судя по документации)? 3. Правильно ли реализован метод flags для моего случая:
? 4. Как добавлять виджеты(в моем случае чекбоксы и комбобоксы) в столбцы? Сообщение отредактировал miksayer - 29.11.2009, 14:00 |
|
|
Litkevich Yuriy |
29.11.2009, 16:55
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
? т.е. можно использовать вместо списка структуру и работать с ней(что имхо более логично)? Могу ли я вместо QList<QVariant> itemData; написать что-то вроде такого: тогда у тебя получится только один элемент-хранилище данных, а в оригинале был контейнер, в который можно добавлять много элементов.Можно сделать структуру (описывающую один элемент) и список указателей на такие структуры (т.е. уже много элементов). 2. Как мне правильно описать setData, который мне необходимо описать(судя по документации)? этот метод нужен для помещения данных в хранилище. Т.е. пользователь дважды щёлкает по элементу, открывается виджет редактор, после завершения редактирования делегат (обслуживающий этот элемент) закрывает редактор и пытается сохранить изменения вызывая метод модели setData (в оригинальном примере данные отправляются в контейнер itemData)4. Как добавлять виджеты(в моем случае чекбоксы и комбобоксы) в столбцы? эта тема уже обсуждалась, и, вроде, имеются примеры кода на форуме.Тема вобщем-то отдельная. П.С. Я бы рекомендовал вернутся к ней после решения всех предыдущих задач |
|
|
miksayer |
29.11.2009, 17:14
Сообщение
#3
|
Студент Группа: Участник Сообщений: 33 Регистрация: 18.1.2009 Пользователь №: 495 Спасибо сказали: 0 раз(а) Репутация: 0 |
спасибо за ответ. Я тут немного переписал под себя модель из примера. Главные изменения здесь:
Т.е. по идее должно выводить в столбец содержимое files(libtorrent::file_storage - это контейнер из сторонней библиотеки), но почему-то ничего не выводиться. В аттаче полный код классов FilesTreeModel и FilesTreeItem(хотя я больше почти ничего не менял). Подскажите, пожалуйста, что не так (в оригинальном примере данные отправляются в контейнер itemData) в оригинальном примере вообще нет этого метода
Прикрепленные файлы
|
|
|
Litkevich Yuriy |
29.11.2009, 17:21
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
miksayer |
30.11.2009, 10:09
Сообщение
#5
|
Студент Группа: Участник Сообщений: 33 Регистрация: 18.1.2009 Пользователь №: 495 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 28.12.2024, 9:20 |