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

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

Страниц: 1 2 3 [4] 5 6 ... 20   Вниз
  Печать  
Автор Тема: Файловый менеджер  (Прочитано 224208 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


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

Цитировать
Крашится при попытке перетаскивании файла на рабочий стол.
Под виндой или под Линухой? У меня под виндой все нормально было.
Цитировать
Есть какой-то косяк с просмотром файла main.cpp (исходник PC) через встроенный вьювер. Показывает только это:

Подозреваю, что дело в символе перевода строки.
Правильно подозреваешь. В просмотре сейчас реализована толька идея, а как ее правильно реализовать, я пока не знаю. Может кто вьювером займется? С меня идея. Улыбающийся
Цитировать
На папках с большим количеством файлов здорово подвисает при прокручивании ползунка. Но это скорее всего проблема самой Qt.
При первом прокручивании, потом должно все нормально быть. Это связано с тем, что получение иконок пока еще не выкинул в поток и при прокручивании они начинают извлекаться и кешироваться.

Цитировать
При изменении размера колонки у левой панели почему-то у правой меняется синхронно (во всех остальных табах тоже меняется) Улыбающийся
Так и задумано.
Цитировать
Файлы не выделяются с зажатым шифтом и перемещением курсора клавиатурой.
При выделении файла пробелом - сам пробел не перемещается на следующую строчку. А хотелось бы
Делал пока под свои вкусы, потом все будет.
Цитировать
Как-нибудь надо уменьшить высоту хедеров у таблицы до высоты шрифта.
Зачем?
Цитировать
При выборе опции "50/50" сплиттер не принимает серединное значение, видимо есть какая-то зависимость от ширины колонок в таблице. Да и само меню должно вызываться по клику на QSplitter, а не по правому щелчку на главной форме.
Странно, у меня 50/50 занимает... А на счет выскакивания меню, если у сына нет меню, то ставится родительское. Нужно было выставить Prevent, забыл. Улыбающийся
Цитировать
Поля, где отображаются полные пути не доступны для редактирования. Я уже привык в TC по полному путю пару раз кликнуть и скопировать куда-нибудь или просто поменять текущую папку на новый путь.
Будет.
Цитировать
При копировании одного файла - нет возможности задать новое имя для файла.
С этим пока проблемы, нужно парсер писать.

Цитировать
долгая загрузка программы
Есть такой косяк... Грустный
Цитировать
программа в памяти весит 33Мб против 12Мб TotalCommander'a
Не забывай, что ТС написан на чистом ВинАпи, а тут кутя хорошо жрет, да еще код пока кривой.

Цитировать
Хотелось бы меню настроек для программы, возможность переключить действие по правому щелчку на вывод меню (пусть даже не системного, но которое можно было бы настроить на запуск спец.утилит, которым передать в качестве параметра имена выделенных файлов). Было бы совсем замечательно - интеграцию с QtScript, с целью автоматизации файловых операций - типа массового переименование в зависимости от содержимого файла. Да и вообще поддержку плагинов.
Поиск файлов. Стрелочки Back/Forward. Переменные окружения.
Все это появится в будущем, если проект будет жить.
Записан

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

Сообщений: 5876


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


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

Опять буду ругаться Улыбающийся Т.к. не компилится на VC++
1. Зачем используется dirent.h? Неужели через Qt нельзя было сделать? через QDirIterator например.
Т.к. в VC++ этого нет.
2. Все таки не sys/time.h, а просто time.h (Опять же нету sys/time.h)
3. И если так необходима директива #warning (ее тоже нет), то экранировать ее:
Код:
#ifndef _MSC_VER
#warning "..."
#endif
У меня просто студии нет, поэтому даже не подозревал. Сегодня посмотрю, что можно сделать.
Пантер, не понял одного важного момента: почему отказался от QFileSystemModel в пользу самописной фсмодели? а как же кеширование посещённых путей, фильтрация по маске и признаку, поддержка вфс? - будешь всё с нуля писать?
дополнил ПантерКоммандер ещё одной панелью на базе QFileSystemModel - работает шустрее...не понимаю...

зы. тянибросай не отменяется по искейпу. а должен бы.
А pagefile.sys показывается в QFileSystemModel? Подмигивающий
Кеширование и все остальное собираюсь сам реализовывать.
А на счет драга и дропа вообще косяки, может ты поможешь. Мне нужно, чтобы оно отменялось при отпускании левой кнопки, но если зажата вторая, оно не отменяется. Просто с драгом/дропом столкнулся впервые, еще не все понимаю. Можешь глянуть на реализацию и направить на путь истинный?
Записан

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

Уже не знаю как извратиться, таким макаром можно уменьшить высоту заголовка у таблицы:

Код
C++ (Qt)
   QHeaderView *h = tb->horizontalHeader();
   QStyleOptionHeader opt;
   opt.initFrom(h);
   int margin = style()->pixelMetric(QStyle::PM_HeaderMargin, &opt, h);
   h->setMaximumHeight(opt.fontMetrics.height()+(margin/2));
 
headerData с SizeHintRole не пробовали?

@panter_dsd А зачем вьювер вообще? Не проще ли назначать внешние программы по типу файла?
Записан
SABROG
Гость
« Ответ #48 : Апрель 28, 2009, 08:29 »

Уже не знаю как извратиться, таким макаром можно уменьшить высоту заголовка у таблицы:

Код
C++ (Qt)
   QHeaderView *h = tb->horizontalHeader();
   QStyleOptionHeader opt;
   opt.initFrom(h);
   int margin = style()->pixelMetric(QStyle::PM_HeaderMargin, &opt, h);
   h->setMaximumHeight(opt.fontMetrics.height()+(margin/2));
 
headerData с SizeHintRole не пробовали?

@panter_dsd А зачем вьювер вообще? Не проще ли назначать внешние программы по типу файла?

Пробовал такие варианты, не работает:

Код
C++ (Qt)
tb->model()->setHeaderData(0, Qt::Vertical, QSize(10,20), Qt::SizeHintRole);
tb->model()->setHeaderData(0, Qt::Vertical, 5, Qt::SizeHintRole);
...
   for(int i=0; i<tb->columnCount();i++)
   {
       tb->model()->setHeaderData(i, Qt::Vertical, QSize(58, 5), Qt::SizeHintRole);
   }
 

Да и не должно по идее, базовый размер не налагает запрета быть окну больше или меньше.
« Последнее редактирование: Апрель 28, 2009, 08:53 от SABROG » Записан
ритт
Гость
« Ответ #49 : Апрель 28, 2009, 09:14 »

А pagefile.sys показывается в QFileSystemModel? Подмигивающий
Кеширование и все остальное собираюсь сам реализовывать.
А на счет драга и дропа вообще косяки, может ты поможешь. Мне нужно, чтобы оно отменялось при отпускании левой кнопки, но если зажата вторая, оно не отменяется. Просто с драгом/дропом столкнулся впервые, еще не все понимаю. Можешь глянуть на реализацию и направить на путь истинный?

да, на счёт стата скрытых системных файлов - это известная бага. но багу ведь можно и пофиксить )
есть ли ещё какие претензии к QFileSystemModel?

дд посмотрю чуть попозжа. как-то тоже давно не приходилось с дд возиться - нужно бы память освежить...
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



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

А pagefile.sys показывается в QFileSystemModel? Подмигивающий

Это проблема QFSFileEngine, и можно было попытаться написать его аналог на базе QAbstractFileEngine. Проблкма описана на Task Tracker. имхо легче пофиксить её, чем выдумывать заново кеширование и прочее
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #51 : Апрель 28, 2009, 10:04 »

ну, я, собственно, о том же - QFileSystemModel работает целиком на QFSFileEngine (в отличие от QDirModel), что даёт множество преимуществ (многопоточность, кэширование, поддержка вфс уже реализованы). для *nix-бэкенда я находил одну древнюю багу, но её сразу же и пофиксили...баги windows-бэкенда до сих пор открыты.
в худшем случае можно было бы озадачиться переписыванием windows-бэкенда, но и то, получится ли лучше, чем у троллей? а даже если где-то и получилось бы лучше, было бы проще протолкнуть эти улучшения в мэйн после смены системы контрибуций...
поэтому я и не понимаю почему QFileSystemModel была отброшена в пользу написания всей фсэнджины и модели с нуля!

надеюсь, пантер объяснит...доходчиво )
Записан
ритт
Гость
« Ответ #52 : Апрель 28, 2009, 14:15 »

что-то пантер не хочет доходчиво объяснять Улыбающийся

немного уточнил на счёт вышеописанной баги - бага минорная, на исправление, видимо, просто не хватило времени. проще всего было бы пофиксить локально, протестить и отправить патч троллям.


на счёт вьювера: по-моему, на ранних этапах вьювер не нужен вообще. для тестов сгодится и диалог запуска или первый попавшийся вьювер с кутэ-аппзов. к тому же, и под вендой, и под иксами имеются готовые сносные вьюверы; а под кде полноценный вьювер/редактор вообще элементарно пишется на kparts'ах. долой велосипеды, даёшь удобный файломанагер! Улыбающийся

зы. и чтобы аккуратненький, как tc Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


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

На работе нет выхода в интернет, поэтому во время не отвечал.
Это проблема QFSFileEngine, и можно было попытаться написать его аналог на базе QAbstractFileEngine. Проблкма описана на Task Tracker. имхо легче пофиксить её, чем выдумывать заново кеширование и прочее
Она давно уже там висит и никак ее не пофиксят. На сколько я помню, еще с 4.3.
ну, я, собственно, о том же - QFileSystemModel работает целиком на QFSFileEngine (в отличие от QDirModel), что даёт множество преимуществ (многопоточность, кэширование, поддержка вфс уже реализованы). для *nix-бэкенда я находил одну древнюю багу, но её сразу же и пофиксили...баги windows-бэкенда до сих пор открыты.
в худшем случае можно было бы озадачиться переписыванием windows-бэкенда, но и то, получится ли лучше, чем у троллей? а даже если где-то и получилось бы лучше, было бы проще протолкнуть эти улучшения в мэйн после смены системы контрибуций...
поэтому я и не понимаю почему QFileSystemModel была отброшена в пользу написания всей фсэнджины и модели с нуля!

надеюсь, пантер объяснит...доходчиво )
Когда начинал писать, QFileSystemModel еще не было, потом как-то пропустил мимо. Сегодня посмотрел и решил, что пусть будет как сейчас. Что-то не очень впечатлило. Тем более у кути еще проблема с аттрибутами файлов под виндой. Да и собираюсь впоследствии прикрутить плагины на содержимое (допустим, чтобы тэги mp3 показывать), пока не знаю как это будет выглядеть, но мне кажется, что со своей моделью это сделать будет полегче. А разве кеширование так сложно реализовать? Тем более кешировать посещенные каталоги у меня будет не модель.
На счет вьювера. Назовите мне программу, которая сравнится с вьюверами фара и тотала? Ее нет. Редакторы вызывать не катит, так как это просмотр, а не редактирование. А просмотрщик неотъемлемая часть ФМ. Пусть пока даже в такой стадии как сейчас.
Выкладываю новую версию. Вот список изменений:
Код:
Добавлено: При копировании выделяется не полное место, а на 10 байт меньше, чтобы можно было потом перезаписать как меньший.
Добавлено: Выдача ошибки при невозможном изменении размера файла.
Добавлено: Выделение при Shift+(Up/Down).
Исправлено: Подправлена логика при зажатии Enter'а на каталоге.
Исправлено: Меню сплиттера тепеь появляется только при клике на сплиттер.
Исправлено: Ускорена загрузка за счет отложения создания панели дисков.
Исправлено: Происходило зависание при удалении нескольких файлов в одном каталоге.
Исправлено: Нормальные иконки в панели инструментов!!!
Изменено: Загрузка иконок файлов по таймеру. Ускорило работу.
Исправлено: Переход на QDirIterator для получения списка файлов.
Исправлено: При создании на пустом диске файла/каталога курсор не появлялся.
Записан

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

вот что студия пишет (VS 2008, Qt 4.5.1)
Цитировать
1>.\src\qfileoperationsthread.cpp(28) : fatal error C1083: Cannot open include file: 'dirent.h': No such file or directory
1>.\src\qfileoperationsdialog.cpp(388) : fatal error C1021: invalid preprocessor command 'warning'
1>.\src\qfilelistview.cpp(305) : fatal error C1021: invalid preprocessor command 'warning'
1>.\src\PantherViewer\plainview.cpp(57) : fatal error C1021: invalid preprocessor command 'warning'
1>.\src\mainwindowimpl.cpp(130) : fatal error C1021: invalid preprocessor command 'warning'
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


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

Млин, забыл это разрулить. Пока только под мингву, завтра исправлю.
Записан

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

Такую штуку выдает в консоль:

Код:
QFileSystemWatcher: failed to add paths: C:\SABROG\PantherCommander\bin\
QFileSystemWatcher: failed to add paths: C:\SABROG\PantherCommander\bin\
516

Это старые пути, которых уже не существует, видимо где-то сохранились.

Цитировать
Исправлено: Нормальные иконки в панели инструментов!!!

Как небыло так и нет Улыбающийся

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

Сообщений: 5876


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


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

Старые пути берутся из ini файла, пока еще не сделал обработку ситуации при несуществующем пути, завтра постараюсь.
Дык ты задропай на панель какой-нибудь экзех.
Вопрос: как в cmake отключить консоль? Т.е. чтобы при запуске проги она не выскакивала.
Записан

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

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #58 : Апрель 28, 2009, 17:33 »

хорошо бы еще иконки кэшировать по типам файлов (кроме длл и исполняемых), а то медленно.
а вообще симпатично, а то меня фрикоммандер немного подзадолбал...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #59 : Апрель 28, 2009, 17:36 »

еще глючок - после копирования файла, показывает его размер 0.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: 1 2 3 [4] 5 6 ... 20   Вверх
  Печать  
 
Перейти в:  


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