Название: Объясните суть модели Отправлено: CJ1 от Октябрь 19, 2012, 07:51 Всем здорова
Мне нужно понять суть модели. Вот например с QTreeView Как вобще ей пользоваться? Как сделать дерево свое? Название: Re: Объясните суть модели Отправлено: Vass от Октябрь 19, 2012, 08:04 QTreeView - это не модель, это это view, т.е. виджет для отображения данных, а модель - это средство хранения и манипулирования данными.
Начните с изучения класса QAbstractItemModel - посмотрите какие pure virtual методы придется определить, чтобы создать своего наследника, очень полезно для понимания что происходит, полистать чужой код с кастомными моделями. Если дерево свое которое вам нужно достаточно простое и не содержит никаких специфических данных, возможно подойдет QTreeWidget в котором уже установлена стандартная модель. Название: Re: Объясните суть модели Отправлено: Bepec от Октябрь 19, 2012, 08:20 Маленький курс для начинающих.
Q*View(Table;List;Tree) - это виджеты для отображения информации. Скажем так - экраны(дисплеи). Модель - это класс, хранящий информацию и отдающий её по требованию View. Для чего это сделано? Чтобы можно было быстро менять/переносить/фильтровать/отображать/сортировать информацию, не затрагивая отображение. Есть маленькие различия между моделями для разных View: 1) ListView - данные для него это список. 2) TableView - данные для него это матрица(строки и столбцы). 3) TreeView - данные для него построены на принципе родитель/наследник. У каждой модели есть функции, которые необходимо переопределить при наследовании. Более глубоко распространяться не буду - это тема для оччень большого манула :) PS если тебе нужно дерево, попробуй QTreeWidget. Разница между Q*View и Q*Widget в том, что у Widget уже имеется модель нужного типа и добавлены интерфейсы для использования. Название: Re: Объясните суть модели Отправлено: CJ1 от Октябрь 19, 2012, 08:26 Спасибо, но мне нужно именно самому сделать из QtreeView дерево
Какую модель надо использовать? QStandardItemModel? Название: Re: Объясните суть модели Отправлено: mutineer от Октябрь 19, 2012, 08:30 Посмотри в документацию - там есть пример реализации древовидной модели
Название: Re: Объясните суть модели Отправлено: Bepec от Октябрь 19, 2012, 09:01 Открываем примеры Qt->ItemView->SimpleTreeModel.
В принципе уже готовая TreeModel, как раз для ознакомления и создания на её основе своей модели. Название: Re: Объясните суть модели Отправлено: GreatSnake от Октябрь 19, 2012, 11:21 Программирование модель/представление (http://www.doc.crossplatform.ru/qt/4.7.x/html-qt/model-view-programming.html).
Название: Re: Объясните суть модели Отправлено: CJ1 от Октябрь 19, 2012, 11:52 Ладно!
Бросил я пока то дело, а вот с QtreeWidget хотябы помогите Код
Как уровни то делают, вот так делаю нифига не вфходит Надо так Главное | |---Второстепенное | |---Третестепенное О, все Название: Re: Объясните суть модели Отправлено: CJ1 от Октябрь 19, 2012, 12:17 А как можно сделать чтоб при нажатии на кнопку дерево открылось или закрылось.
И сохранидо свое состояние при закрытии? Название: Re: Объясните суть модели Отправлено: mutineer от Октябрь 19, 2012, 12:19 Что значит "дерево закрылось"? на какую кнопку? какое состояние сохранило?
Название: Re: Объясните суть модели Отправлено: CJ1 от Октябрь 19, 2012, 12:29 Открытое и закрытое дерево!
Я вышел из программы, вошел и все также! Название: Re: Объясните суть модели Отправлено: mutineer от Октябрь 19, 2012, 12:34 Развернуть/свернуть ветку:
void QTreeWidget::collapseItem ( const QTreeWidgetItem * item ) [slot] void QTreeWidget::expandItem ( const QTreeWidgetItem * item ) [slot] Сохранение состояния между запусками проги надо делать самому Название: Re: Объясните суть модели Отправлено: CJ1 от Октябрь 19, 2012, 14:19 Сделал!
А можно програмно получить последний и первый QtreeWidgetItem? Название: Re: Объясните суть модели Отправлено: kambala от Октябрь 19, 2012, 14:41 можно, если уделить немного времени чтению документации
Название: Re: Объясните суть модели Отправлено: trot от Октябрь 19, 2012, 16:46 Цитировать А можно програмно получить последний и первый QtreeWidgetItem? Необходимо учитывать, что в дереве понятия последний/первый можно использовать только в рамках одного узла. |