|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
|
Не могу отладить древовидную моделью в Qt04.10.2015, 16:34. Показов 1833. Ответов 17
Метки нет (Все метки)
Прошу помощи по созданию древовидной модели. Элементы не отображаются. Ранее делал все работало...
В модель передается список элементов. Каждый элемент имеет указатель на родителя и список потомков (все это определяется конструктором); Естественно переопределены все методы требующие для построения простого дерева(данные, кол. столбцов, кол. рядов, индек и родитель) Сама модель сделана по примеру Simple Tree Model. Должен ли rootItem быть включеным в этот список?
0
|
|
| 04.10.2015, 16:34 | |
|
Ответы с готовыми решениями:
17
не могу отладить программу в Eclipce Борьба с потоками, не могу отладить не могу отладить игру (Pascal) |
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
|
| 04.10.2015, 18:33 | |
|
Без кода не понятно. Что за RootItem?
0
|
|
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
|
| 04.10.2015, 20:25 [ТС] | |
|
Если открыть пример Qt стандартный Simple Tree Model, то в нем в классе самой модели есть Item *rootItem он как бы отделен от данных. Указатель на первый элемент. Я не совсем понимаю, взяимодействует ли он с самими данными? Предполагаю, что у меня данные должны содержать этот rootItem и соответствующие указатили друг на друга: потомки и родителя.
0
|
|
|
44 / 44 / 12
Регистрация: 05.04.2015
Сообщений: 345
|
|
| 04.10.2015, 21:06 | |
|
Нужен все таки код. Может просто не происходит заполнение данными. И да rootItem - это корневой элемент. Просто в функции data и parent сделано так что он не отображается. Но он есть в функции headerData.
0
|
|
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
|||||||||||||||||||||
| 04.10.2015, 21:47 [ТС] | |||||||||||||||||||||
|
Т.е. в самой структуре - QList<Мои элементы> должен быть этот корневой элемент с соответствующими ссылками друг на друга?
Корневой элемент(rootItem) (содержит список дочек) | |___Дочерний элемент 1 (содержит указатель на корневой элемент) Код громоздкий, надо в целом смотреть...пока пробую сам ковыряться. Там элементы создаваемые являются потомками "фабричного метода". Попытаюсь объяснить: В модель передаются данные в виде списка QList<INodeProduct *>
0
|
|||||||||||||||||||||
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
|||
| 05.10.2015, 07:32 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
|||||||
| 05.10.2015, 08:53 [ТС] | |||||||
|
Shtirliz72, я про rootItem и спрашивал, нужен ли он в списке данных? Первоначальная версия передачи данных была такая:
0
|
|||||||
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
|||||||
| 05.10.2015, 09:12 | |||||||
Сообщение было отмечено kavashige как решение
РешениеК вам вопрос на засыпку, а какой же индекс у root'a? Правильно, QModelIndex(). Невалидный. Поэтому у вас не отображаются столбцы для всех детей рутового индекса. Пишите там
1
|
|||||||
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
||||||
| 05.10.2015, 12:25 [ТС] | ||||||
|
Беллисимо! Вот я дурак, действительно 0 был, а я уверен, что был единица. Все работает!
Добавлено через 3 часа 5 минут И все же по поводу rootItem, сам rootItem не отображается но...
0
|
||||||
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
||
| 05.10.2015, 12:43 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
|
| 05.10.2015, 13:36 [ТС] | |
|
Все что есть, вся модель целиком выше, я еще коментарии в коде добавил, мб ты их не прочитал (// если убрать начиная отсюда...и.т.д.), 5ть методов и метод setDataSource
0
|
|
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
||
| 05.10.2015, 14:06 | ||
|
Добавлено через 4 минуты И я как-то не понимаю один момент: зачем ты вообще используешь в древовидной модели список?
0
|
||
|
44 / 44 / 12
Регистрация: 05.04.2015
Сообщений: 345
|
|
| 05.10.2015, 14:39 | |
|
В примере Qt, я делал для себя дерево тоже по нему, rootItem используется для того чтобы было удобно очищать память (он корневой элемент) и для хранения данных горизонтального хэдера. Покажи headerData. Хоть у меня дерево тоже из примеров, мне немного тяжело ориентироваться потому что имена переменных изменены.
0
|
|
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
||||||
| 05.10.2015, 21:41 [ТС] | ||||||
|
Вот заголовочник, но там ничего нового:
0
|
||||||
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
|||
| 05.10.2015, 22:48 | |||
|
Если хотите совета - более подробно опишите, что вы хотите и как оно у вас будет действовать. Чем более полно опишите - тем точнее будет совет.
0
|
|||
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
|
| 06.10.2015, 08:52 [ТС] | |
|
По своей структуре это напоминает OPC сервер.
Список узлов. Каждый узел хранит у себя дочерний узел и список параметров. Список параметров будет формировать таблицу. Таким образом слева у нас дерево узлов (древовидная модель), справа таблица с параметрами (списковая модель). А модель данных получается "список - списков". Должны быть реализованы следующие возможности: Редактирование узла. Удаление узла. Вставка нового узла в любой родительский узел. Копирование узла и создание новой копии узла принадлежащей другому родителю. Редактирование параметров. Добавление новых параметров, удаление. Перетаскивание узлов. Количество узлов не более 200 шт. Количество параметров для каждого узла не более 1000шт. (С большим запасом) Структура списка хранится в БД. При старте, приложение считывает из БД значения и формирует список, который уже используется. Реализация сейчас такая: Есть класс NodeOwner он и хранит весь список и взаимодействует с БД, класс является одиночкой. При изменении любого параметра срабатывает сигнал dataChanged(), и модель полностью заменяет данные(тут конечно очень не оптимально, т.к. каждый раз модель заново получает целый список, но подобная реализация уже была и каких то проблем с быстродействием не наблюдалось список с 10000 параметров мгновенно обновлялся)
0
|
|
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
||
| 06.10.2015, 11:52 | ||
|
Насчёт модели: если же крайне просто делать, то это обычное дерево. Списки параметров можно не использовать. Просто каждый параметр - это узел дерева, не имеющий потомков и ссылающийся на данные типа параметр. А каждый узел из списка узлов - это узел дерева, который может иметь или не иметь потомков и ссылающийся на данные типа узел. В данном случае ваша модель будет максимально похожа на обычную файловую модель, где есть папки(узлы) и файлы(параметры). Примеров подобной модели в интернете - масса. Вполне возможно что данная модель ни разу не является оптимальной, но она крайне проста. Про оптимизации и прочее - виднее явно вам. Только вы знаете и полностью владеете информацией о том, как данная модель будет использоваться и какие данные как часто она будет представлять. Так что могу пожелать только удачи.
1
|
||
|
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
|
|
| 08.10.2015, 07:30 [ТС] | |
|
Shtirliz72, спасибо вам. Я в творческом процессе...
0
|
|
| 08.10.2015, 07:30 | |
|
Помогаю со студенческими работами здесь
18
Нужно отладить, не могу понять, на что он ругается! Компилятор оптимизировал мой код, и я не могу его отладить Не могу отладить программу, не понимаю, что нужно сделать Нужно отладить программу, есть ошибки не могу их понять и исправить Организовать древовидную структуру данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|