Russian Qt Forum
Ноябрь 27, 2024, 21:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?  (Прочитано 6727 раз)
darktroll
Гость
« : Июнь 17, 2010, 04:06 »

Доброго времени суток, уважаемые гуру Qt.
Скажите, используя связку QTreeView + QFileSystemModel можно ли сделать так, как показано на скрине?
Поясняю. Мне нужно сделать так, чтобы у QTreeView было несколько узлов-родителей. В данном случае 3:
   Home (домашняя директория пользователя) (реально это "/home/user/")
   Filesystem(корень файловой системы) (реально это "/")
   Volumes (примонтированные диски, флешки и т.д.) (реально это "/media/")
При раскрытии каждого должно отображаться соответсвующиее данной директории содержимое (посредством QFileSystemModel).
Если кто работает в Linux и пользуется, например, Nautilus, то левая панель этого самого наутилуса именно то что я имею ввиду.
Подскажите пожалуйста, это вообще реально сделать в такой связке или каким-либо другим способ проще/грамотнее?
« Последнее редактирование: Июнь 17, 2010, 04:11 от darktroll » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Июнь 17, 2010, 06:35 »

надо свою модель-посредник сделать.
Записан

Юра.
crossly
Гость
« Ответ #2 : Июнь 17, 2010, 09:55 »

treeview, rootdecorated= false, setrootindex
Записан
darktroll
Гость
« Ответ #3 : Июнь 17, 2010, 11:38 »

надо свою модель-посредник сделать.
Вот этого я и боялся.... Я просто не представляю как это делать.....  Улыбающийся
treeview, rootdecorated= false, setrootindex
Я наверное чего-то не понимаю, но я не вижу способа этими средствами реализовать задуманное. Я так понимаю, setrootindex задает конкретный каталог в качестве корневого, но только один. а мне надо несколько. Если это не так, то не могли бы Вы привести маленький примерчик?
Записан
crossly
Гость
« Ответ #4 : Июнь 17, 2010, 11:44 »

простите.... а каким образом может быть несколько корневых каталогов??.... все просто .... берем вьюху.... убираем декорацию.... дабы не было в виде дерева.... в первой вьюхе выбираем узел Home.... его же в качестве корневого устанавливаем во вторую.... и получаем то что тебе нужно...
Записан
darktroll
Гость
« Ответ #5 : Июнь 17, 2010, 12:26 »

Мы друг друга не понимаем.... Улыбающийся Имхо, то что придется писать свою модель - самый правльный ответ.
Объясняю суть. Есть две вьюхи: qtreeview и qtableview. На обе повешена qfilesystemmodel. В qtreeview отображаются узлы-родители наиболее часто посещаемых папок (в моем же случае это домашняя директория, корневой каталог и директория, куда монтируются диски). При клике на узел он должен раскрываться + на qtableview отображается его содежимое со всеми свойствами (имя, размер, дата изменения и т.д.).
Так вот из всего этого затык только с размещением в qtreeview нескольких узлов-родителей (повторюсь: home, file system и volumes). Это нужно, чтобы быстро получить доступ к часто используемым папкам. Т.е чтобы не рыскать по всей файловой системе в поисках нужной папки, вывел ее в qtreeview и обращайся к ней одним кликом.
Как-то так.... Проще объяснить не смогу наверное....   Улыбающийся
Записан
crossly
Гость
« Ответ #6 : Июнь 17, 2010, 12:33 »

сори.... дошло.. Улыбающийся
Записан
darktroll
Гость
« Ответ #7 : Июнь 17, 2010, 12:44 »

Это хорошо....  Улыбающийся Но вот как решить свою проблему - не соображу... Неужели никак не обойтись без написания модели?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Июнь 17, 2010, 12:47 »

>>Неужели никак не обойтись без написания модели?
нет. Но это не так страшно, главное начать, потом это может превратиться в хоби Подмигивающий
Записан

Юра.
Kolobok
Гость
« Ответ #9 : Июнь 17, 2010, 12:51 »

Можно расположить три вьюшки друг под другом и назначить каждой свою QFileSystemModel.
Записан
darktroll
Гость
« Ответ #10 : Июнь 17, 2010, 12:54 »

Можно расположить три вьюшки друг под другом и назначить каждой свою QFileSystemModel.
Думал об этом, но имхо, это будет занимать слишком много ресурсов, т.к программа должна работать на слабой машинке (с небольшим экраном и скромными хар-ками) с максимальной скоростью.
>>Неужели никак не обойтись без написания модели?
нет. Но это не так страшно, главное начать, потом это может превратиться в хоби Подмигивающий
Улыбающийся
Если Вам не трудно, подскажите, с чего начать? Может краткий план создания модели?
Я не совсем понимаю, что я должен реализовать и на основе чего. От чего мне нужно наследоваться?

P.S. На всякий случай оговорюсь: не примите мою просьбу за нахальство, в ней нет намека на то чтобы все сделать за меня. Мне самому интересно этому научиться, но не знаю с чего начать....
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Июнь 17, 2010, 12:58 »

>>подскажите, с чего начать? Может краткий план создания модели?
лучше поискать по форуму, есть примеры моделей и обсуждения связанные с ними.

>>От чего мне нужно наследоваться?
от QAbstractProxyModel и её наследников
Почитать на русском можно тут
Записан

Юра.
darktroll
Гость
« Ответ #12 : Июнь 17, 2010, 13:00 »

Спасибо, буду пробовать.  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 23.