Russian Qt Forum
Ноябрь 25, 2024, 21:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
QTreeView + QDirModel как организовать несколько узлов родителей?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTreeView + QDirModel как организовать несколько узлов родителей? (Прочитано 6093 раз)
virtual_root
Гость
QTreeView + QDirModel как организовать несколько узлов родителей?
«
:
Ноябрь 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? И как это сделать?
Пожалуйста,помогите! Я прикрепила картинку,вот что именно мне нужно.
Записан
KADABRA
Гость
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #1 :
Ноябрь 02, 2010, 22:28 »
Цитировать
Возможно ли реализовать подобную структуру,примерно как в QT? И как это сделать?
Да, надо реализовать свою модель.
Записан
virtual_root
Гость
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #2 :
Ноябрь 03, 2010, 08:50 »
А как это сделать? С чего мне начать?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #3 :
Ноябрь 03, 2010, 10:31 »
1. Запускаешь Ассистент.
2. Читаешь про QAbstractItemModel.
3.
4. Профит.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
virtual_root
Гость
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #4 :
Ноябрь 03, 2010, 11:33 »
Подскажите,пожалуйста, а как мне добавить к родителю ещё потомков,в уже имеющейся модели?
Возможно ли,в качестве потомка добавлять ещё одну модель?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #5 :
Ноябрь 03, 2010, 11:34 »
bool QAbstractItemModel::insertRow ( int row,
const QModelIndex & parent = QModelIndex()
)
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
virtual_root
Гость
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #6 :
Ноябрь 03, 2010, 11:36 »
Если несложно,можно пример кода. Я просто только недавно работаю с QT, и до меня туго доходит что мне нужно сделать в с моим деревом,чтоб оно было примерно как на картинке.
Записан
virtual_root
Гость
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #7 :
Ноябрь 03, 2010, 11:38 »
А как мне узнать индекс родителя? Я же уже добавила в дерево модель, мне теперь получается нужно в самый верхний уровень добавить ещё одну подмодель....
P.S. Я совсем никак не могу разобраться с этими моделями, документацию читала,но тяжело что-то соотнести что за чем следовать должно.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #8 :
Ноябрь 03, 2010, 12:18 »
Ты не добавляешь в дерево модель - дерево и есть твоя модель.
Посмотри пример examples\itemviews\simpletreemodel\ в каталоге с Кьютом.
Что будет не понятно, спрашивай.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
galilley
Гость
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #9 :
Ноябрь 05, 2010, 08:22 »
Доброго времени!
Скажу на своём примере, что я хоть и пишу на Qt уже довольно продолжительное время, но до сих пор слова "создать свою модель" приводят меня в лёгкое состояние ужаса. Я, конечно, понимаю, что там наверно и нет ничего страшного, а если её написать (модель), то дальнейшая работа значительно упроститься а код станет гораздо красивее. Но, поскольку разобраться руки не доходят, а писать структуры, подобные вашим, необходимость есть, я послупаю следующим образом - пишу все через QStandardModel. Тут сруктура получается следующая - добавление item-ов с наследником от invisibleRootItem, это первый уровень. Потом, добавление к этим item-ам строчек и колонок, и назначение item-ов им, это второй уровень и т.д. Как временное решение, меня это устраивает.
Но повторяю, это совет из рода "как не надо делать".
Записан
virtual_root
Гость
Re: QTreeView + QDirModel как организовать несколько узлов родителей?
«
Ответ #10 :
Ноябрь 05, 2010, 19:52 »
спасибо вам большое за совет. Правда у меня ничего не вышло. Я вообще в принципе не могут заставить QTreeView отображать мою модель,ничего не получается...(
Может есть какой-то вообще другой способ решения моей проблемы? Я думала может просто пусть отображается как у меня и есть(выше в коде), а пользователь сам выделит нужные папки,нажмет на кнопку и только они останутся в QTreeView. Но у меня и это не получается, я не могу никак связвть QDirModel с QProxyModel(думала мне она нужна для этих целей).
Мистр galiley, если вы сталкивались с подобной проблемой у вас не осталось примера кода? Если вам не трудно покажите,пожалуйста,как это реализовать.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...