Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: darktroll от Июнь 17, 2010, 04:06



Название: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: darktroll от Июнь 17, 2010, 04:06
Доброго времени суток, уважаемые гуру Qt.
Скажите, используя связку QTreeView + QFileSystemModel можно ли сделать так, как показано на скрине?
Поясняю. Мне нужно сделать так, чтобы у QTreeView было несколько узлов-родителей. В данном случае 3:
   Home (домашняя директория пользователя) (реально это "/home/user/")
   Filesystem(корень файловой системы) (реально это "/")
   Volumes (примонтированные диски, флешки и т.д.) (реально это "/media/")
При раскрытии каждого должно отображаться соответсвующиее данной директории содержимое (посредством QFileSystemModel).
Если кто работает в Linux и пользуется, например, Nautilus, то левая панель этого самого наутилуса именно то что я имею ввиду.
Подскажите пожалуйста, это вообще реально сделать в такой связке или каким-либо другим способ проще/грамотнее?
(http://img.pixs.ru/storage/6/1/3/Snimokpng_9263849_748613.png)


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: lit-uriy от Июнь 17, 2010, 06:35
надо свою модель-посредник сделать.


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: crossly от Июнь 17, 2010, 09:55
treeview, rootdecorated= false, setrootindex


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: darktroll от Июнь 17, 2010, 11:38
надо свою модель-посредник сделать.
Вот этого я и боялся.... Я просто не представляю как это делать.....  :)
treeview, rootdecorated= false, setrootindex
Я наверное чего-то не понимаю, но я не вижу способа этими средствами реализовать задуманное. Я так понимаю, setrootindex задает конкретный каталог в качестве корневого, но только один. а мне надо несколько. Если это не так, то не могли бы Вы привести маленький примерчик?


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: crossly от Июнь 17, 2010, 11:44
простите.... а каким образом может быть несколько корневых каталогов??.... все просто .... берем вьюху.... убираем декорацию.... дабы не было в виде дерева.... в первой вьюхе выбираем узел Home.... его же в качестве корневого устанавливаем во вторую.... и получаем то что тебе нужно...


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: darktroll от Июнь 17, 2010, 12:26
Мы друг друга не понимаем.... :) Имхо, то что придется писать свою модель - самый правльный ответ.
Объясняю суть. Есть две вьюхи: qtreeview и qtableview. На обе повешена qfilesystemmodel. В qtreeview отображаются узлы-родители наиболее часто посещаемых папок (в моем же случае это домашняя директория, корневой каталог и директория, куда монтируются диски). При клике на узел он должен раскрываться + на qtableview отображается его содежимое со всеми свойствами (имя, размер, дата изменения и т.д.).
Так вот из всего этого затык только с размещением в qtreeview нескольких узлов-родителей (повторюсь: home, file system и volumes). Это нужно, чтобы быстро получить доступ к часто используемым папкам. Т.е чтобы не рыскать по всей файловой системе в поисках нужной папки, вывел ее в qtreeview и обращайся к ней одним кликом.
Как-то так.... Проще объяснить не смогу наверное....   :)


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: crossly от Июнь 17, 2010, 12:33
сори.... дошло.. :)


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: darktroll от Июнь 17, 2010, 12:44
Это хорошо....  :) Но вот как решить свою проблему - не соображу... Неужели никак не обойтись без написания модели?


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: lit-uriy от Июнь 17, 2010, 12:47
>>Неужели никак не обойтись без написания модели?
нет. Но это не так страшно, главное начать, потом это может превратиться в хоби ;)


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: Kolobok от Июнь 17, 2010, 12:51
Можно расположить три вьюшки друг под другом и назначить каждой свою QFileSystemModel.


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: darktroll от Июнь 17, 2010, 12:54
Можно расположить три вьюшки друг под другом и назначить каждой свою QFileSystemModel.
Думал об этом, но имхо, это будет занимать слишком много ресурсов, т.к программа должна работать на слабой машинке (с небольшим экраном и скромными хар-ками) с максимальной скоростью.
>>Неужели никак не обойтись без написания модели?
нет. Но это не так страшно, главное начать, потом это может превратиться в хоби ;)
:)
Если Вам не трудно, подскажите, с чего начать? Может краткий план создания модели?
Я не совсем понимаю, что я должен реализовать и на основе чего. От чего мне нужно наследоваться?

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


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: lit-uriy от Июнь 17, 2010, 12:58
>>подскажите, с чего начать? Может краткий план создания модели?
лучше поискать по форуму, есть примеры моделей и обсуждения связанные с ними.

>>От чего мне нужно наследоваться?
от QAbstractProxyModel и её наследников
Почитать на русском можно тут (http://doc.crossplatform.ru/qt/4.5.0/model-view-proxy-models.html)


Название: Re: QTreeView + QFileSystemModel: возможно ли несколько узлов-родителей?
Отправлено: darktroll от Июнь 17, 2010, 13:00
Спасибо, буду пробовать.  ;)