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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Компонент просмотра ФС vs. MVC  (Прочитано 9390 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Апрель 02, 2009, 16:31 »

необходимо написать небольшой компонент просмотра ФС, с обычными переключалками вида типа "дерево", "иконки", "список". Вроде бы MVC подходит, но почитав некоторые темы по QFileSystemModel или QDirModel становится как-то грустно. Баги в важных местах находят до сих пор. В связи с этим возникает вопрос а стоит ли вообще заморачиваться с MVC и не писать ли на классических item-based виджетах? Какие преимущества и недостатки у обоих подходов вы видите?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 02, 2009, 21:16 »

Сейчас заморачиваюсь по этой теме. Свою модель написал, уже можно нормально бегать по ФС. Вот более менее сделаю и выложу на всеобщее обозрение.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Апрель 02, 2009, 21:35 »

>>не писать ли на классических item-based виджетах?
А их в принципе в Qt4 нет, Q***Widget - наследник Q***View просто внутри содержит модель. Следовательно надо сделать свою модель (Как это сделал panter_dsd) прицепить к интерисующему представлению и всё.
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Апрель 02, 2009, 21:43 »

Сейчас заморачиваюсь по этой теме. Свою модель написал, уже можно нормально бегать по ФС. Вот более менее сделаю и выложу на всеобщее обозрение.

будет интересно посмотреть
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Апрель 02, 2009, 22:26 »

Сейчас заморачиваюсь по этой теме. Свою модель написал, уже можно нормально бегать по ФС. Вот более менее сделаю и выложу на всеобщее обозрение.

будет интересно посмотреть
Вообще пытаюсь коммандер написать. Пока сделана модель локальной фс, табы каталогов, переименование файлов. Еще столько сделать нужно.... Улыбающийся

Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Апрель 03, 2009, 01:44 »

Я правильно понимаю, что если прицепить QFileSystemModel к QTreeView, то смешение файлов и каталогов - это нормально поведение, и чтобы сделать каталоги сперва, то нужно переопредеять sort() или использовать QSortFilterProxyModel?
« Последнее редактирование: Апрель 03, 2009, 02:44 от Alex Custov » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Апрель 03, 2009, 06:11 »

Использовать QSortFilterProxyModel.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
crackedmind
Гость
« Ответ #7 : Апрель 03, 2009, 14:32 »

Вообще пытаюсь коммандер написать. Пока сделана модель локальной фс, табы каталогов, переименование файлов. Еще столько сделать нужно.... Улыбающийся
Интересно. Ты хочешь сделать полноценный коммандер? Какой функционал планируешь? Будет ли Open Source? Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Апрель 03, 2009, 16:49 »

1. Полноценный.
2. Полный.
3. Тут даже без вопросов. Конечно GPL.
Вообще пишу для саморазвития. Если что-нибудь получится и не надоест, буду развивать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Апрель 03, 2009, 19:39 »

Использовать QSortFilterProxyModel.

Сделал базовую QSortFilterProxyModel с двумя пока пустыми методами lessThan() и filterAcceptsRow(). Оба возвращают true. При этом в дереве (QTreeView) пропали элементы + (те что разворачивают каталоги). Было:

Код:
model = new QFileSystemModel;
model->setResolveSymlinks(true);

root = model->setRootPath(QDir::rootPath());

view->setModel(model);
view->setRootIndex(model->index(root));

Стало:

Код:
model = new QFileSystemModel;
model->setResolveSymlinks(true);

proxySortModel = new DirectorySortFilterProxyModel;
proxySortModel->setDynamicSortFilter(true);
proxySortModel->setSourceModel(model);

root = model->setRootPath(QDir::rootPath());

view->setModel(proxySortModel);
view->setRootIndex(proxySortModel->mapFromSource(root));

Что-то я не пойму взаимосвязи сортировки и наличия крестиков возле каталогов Непонимающий "rootIsDecorated" установлен в true.

panter_dsd кстати, а как ты будешь решать проблему отображения MIME иконок под Linux? Или это уже сделано? Будет интересно узнать как.
« Последнее редактирование: Апрель 04, 2009, 02:51 от Alex Custov » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Апрель 04, 2009, 09:36 »

На счет пропажи rootIsDecorated не знаю, так как устанавливаю в false.
По поводу иконок еще не копался, пока только под виндой работают, а под Линухой стандартные показывает. Скорее всего под кеды придется заточить.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #11 : Апрель 05, 2009, 07:23 »

то что файлы и каталоги смешиваются, это оказывается баг ещё с 4.4.0. В 4.5.0 судя по всему починено, но я вглубь не смотрел.

Цитировать
Thank you for the suggestion.  This is currently under consideration.
You can track the task here:

http://www.trolltech.com/developer/task-tracker/index_html?id=214108&method=entry
Записан
kirill
Гость
« Ответ #12 : Апрель 07, 2009, 05:37 »

Совет, откажитесь совсем от использования QFileSystemModel и делайте все вручную через QDir, QFileInfo.
Тогда и не будет вопросов где плюсики и т.п. По поводу плюсиков Константин писал, что QFileSystemModel кэширует обращения к каталогам, так что узнать, что в каталоге нельзя не обратившись к нему. Как то так.
Записан
Joned
Гость
« Ответ #13 : Апрель 09, 2009, 13:08 »

Когда выложиш срочнно нужна пожожая фишка
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #14 : Апрель 09, 2009, 17:30 »

Это ко мне?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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