Название: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: virtual_root от Ноябрь 02, 2010, 22:06 У меня возникла следующая проблема: необходимо по кнопке открывать открывать диалоговое окно и выбирать интересующую нас папку. Затем всё её содержимое добавлять в QTreeView. С этим проблем не возникло. А вот как снова при выборе по кнопки новой директории, добавлять её в QTreeView, как новый узел.
Я использовала следующий код: void MainWindow::on_pushButton_3_clicked() { QFileDialog d; QDirModel *my_model; QString dir_name = d.getExistingDirectory(); my_model = new QDirModel; ui->treeView->setModel(my_model); ui->treeView->setRootIndex(my_model->index(dir_name)); } Вся проблема в том,что при каждом нажатии у меня всё заново перерисовывается в QTreeView. Возможно ли реализовать подобную структуру,примерно как в QT? И как это сделать? Пожалуйста,помогите! Я прикрепила картинку,вот что именно мне нужно. Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: KADABRA от Ноябрь 02, 2010, 22:28 Цитировать Возможно ли реализовать подобную структуру,примерно как в QT? И как это сделать? Да, надо реализовать свою модель.Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: virtual_root от Ноябрь 03, 2010, 08:50 А как это сделать? С чего мне начать?
Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: Пантер от Ноябрь 03, 2010, 10:31 1. Запускаешь Ассистент.
2. Читаешь про QAbstractItemModel. 3. ??? 4. Профит. Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: virtual_root от Ноябрь 03, 2010, 11:33 Подскажите,пожалуйста, а как мне добавить к родителю ещё потомков,в уже имеющейся модели?
Возможно ли,в качестве потомка добавлять ещё одну модель? Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: Пантер от Ноябрь 03, 2010, 11:34 bool QAbstractItemModel::insertRow ( int row, const QModelIndex & parent = QModelIndex() )
Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: virtual_root от Ноябрь 03, 2010, 11:36 Если несложно,можно пример кода. Я просто только недавно работаю с QT, и до меня туго доходит что мне нужно сделать в с моим деревом,чтоб оно было примерно как на картинке.
Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: virtual_root от Ноябрь 03, 2010, 11:38 А как мне узнать индекс родителя? Я же уже добавила в дерево модель, мне теперь получается нужно в самый верхний уровень добавить ещё одну подмодель....
P.S. Я совсем никак не могу разобраться с этими моделями, документацию читала,но тяжело что-то соотнести что за чем следовать должно. Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: Пантер от Ноябрь 03, 2010, 12:18 Ты не добавляешь в дерево модель - дерево и есть твоя модель.
Посмотри пример examples\itemviews\simpletreemodel\ в каталоге с Кьютом. Что будет не понятно, спрашивай. Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: galilley от Ноябрь 05, 2010, 08:22 Доброго времени!
Скажу на своём примере, что я хоть и пишу на Qt уже довольно продолжительное время, но до сих пор слова "создать свою модель" приводят меня в лёгкое состояние ужаса. Я, конечно, понимаю, что там наверно и нет ничего страшного, а если её написать (модель), то дальнейшая работа значительно упроститься а код станет гораздо красивее. Но, поскольку разобраться руки не доходят, а писать структуры, подобные вашим, необходимость есть, я послупаю следующим образом - пишу все через QStandardModel. Тут сруктура получается следующая - добавление item-ов с наследником от invisibleRootItem, это первый уровень. Потом, добавление к этим item-ам строчек и колонок, и назначение item-ов им, это второй уровень и т.д. Как временное решение, меня это устраивает. Но повторяю, это совет из рода "как не надо делать". Название: Re: QTreeView + QDirModel как организовать несколько узлов родителей? Отправлено: virtual_root от Ноябрь 05, 2010, 19:52 спасибо вам большое за совет. Правда у меня ничего не вышло. Я вообще в принципе не могут заставить QTreeView отображать мою модель,ничего не получается...(
Может есть какой-то вообще другой способ решения моей проблемы? Я думала может просто пусть отображается как у меня и есть(выше в коде), а пользователь сам выделит нужные папки,нажмет на кнопку и только они останутся в QTreeView. Но у меня и это не получается, я не могу никак связвть QDirModel с QProxyModel(думала мне она нужна для этих целей). Мистр galiley, если вы сталкивались с подобной проблемой у вас не осталось примера кода? Если вам не трудно покажите,пожалуйста,как это реализовать. |