![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Rocky |
![]()
Сообщение
#1
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Вроде бы внимательно изучил документацию, примеры simple и edit tree model. Начал сам делать и совсем запутался... Помогите распутаться плиз... Хочу сделать 3-х уровневую модель дерева. В примерах есть класс TreeItem который содержит указатель на родителя и список чайлдов. Но этот родитель и элементы списка сами являются TreeItem. С этим вроде бы ясно... А как развернуть эту структуру? Чтобы данные как бы отделить друг от друга?
Например превратить ее в 4 класса: 1. Класс самой модели. 2. Класс с данными верхенго уровня (содержит список данных и список чайлдов 3) 3. Класс с данными среднего уровня (содержит список данных и список чайлдов 4 и указатель на парента 2) 4. Класс с данными нижнего уровня (содержит список данных и указатель на парента 3) А как при таком раскладе написать тела виртуальных функций QAbstractItemModel (index и parent и rowCount)? 3-й день сижу и ниче не получается ( Или этот подход неверен? Сама задача такая. Есть список имен. Каждому элементу из этого списка соответсвует список других имен. Каждому элементу из последнего списка соответсвует набор данных. Как это все представить для модели? (( Спасибо если кто-нибудь что-нибудь подскажет... Сообщение отредактировал Rocky - 14.12.2010, 11:47 |
|
|
![]() |
Rocky |
![]()
Сообщение
#2
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Вместо списка данных TreeItem типа QList<QVariant>, можно испоотзовать любые структуры данных. QList<QVariant> в примере (ИМХО) приведен чисто чтобы показать как оно работает, т.е. общий случай. Тем более, что в QList<QVariant> можно впихнуть любые данные, поэтому такое решение универсально. Да, любые... но если нужна иерархическая структура данных? Так вот мне совершенно не понятно, что возвращать из функций класса-наследника от QAbstractItemModel index/parent/rowCount. Вот например: Раскрывающийся текст
Раскрывающийся текст
Раскрывающийся текст
Вобщем, вообще ничего не понятно, кроме функций columnCount, flags, headerData.... Я уже начал сомневаться, можно ли построить иерархическое дерево через модель? Их примеры (edit tree model) можно адаптировать конечно... Т.е. вместо списка QVariant сделать 6 переменных - на 6 столбцов. Но тогда будет лишнее дублирование данных. Потому что, например, строка 1 таблицы-дерева должна содержать только одно имя (Имя_1) - в 1-м столбце. Строка 2 - должна содеражть только Имя_2 - другую переменную (во 2-м столбце). Соответсвенно остальные столбцы - (4 штуки) - переменные - должны быть пустыми... А память под них во-первых выделяется, а во-вторых это только запутывает, т.к. они не используются... Короче бред какой-то..... В случае модели таблицы - списка все полностью понятно... А тут какая-то фигня... ( Еще более непонятно, что писать в функции insertRows(...). |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 8.5.2025, 13:47 |