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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFileDialog::getExistingDirectory для выбора нескольких директорий  (Прочитано 5920 раз)
denis
Гость
« : Октябрь 29, 2012, 11:05 »

Код:
    QString dirPath = QFileDialog::getExistingDirectory(0, "Open Directory",
                                                     "c:",
                                                     QFileDialog::ShowDirsOnly
                                                     | QFileDialog::DontResolveSymlinks);

    QMessageBox::warning( 0," windowTitle()",  dirPath );

1. Если выбираю в диалоге несколько директорий, то показывается пустое сообщение.
2. Если использую getOpenFileNames, то не получается отобразить только директории, без файлов

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

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Октябрь 29, 2012, 11:53 »

http://doc.qt.digia.com/4.8-snapshot/qfiledialog.html#getOpenFileNames
QFileDialog::ShowDirsOnly передаешь в Options options и будет тебе счастье. Подмигивающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Serr500
Гость
« Ответ #2 : Октябрь 29, 2012, 12:24 »

http://doc.qt.digia.com/4.8-snapshot/qfiledialog.html#getOpenFileNames
QFileDialog::ShowDirsOnly передаешь в Options options и будет тебе счастье. Подмигивающий
Это не работает.
Записан
Bepec
Гость
« Ответ #3 : Октябрь 29, 2012, 12:32 »

Проверял?
Записан
Serr500
Гость
« Ответ #4 : Октябрь 29, 2012, 12:38 »

Проверял?
Да. Только что. Отображает все файлы и выбрать каталог не даёт - диалог открывает внутри его содержимое.
Записан
denis
Гость
« Ответ #5 : Октябрь 29, 2012, 14:31 »

похоже, что решения нет, кроме как написать свою кроссплатформенную функицю? если есть желающие написать такую функцию, могу заплатить. пишите в личку.
Записан
Bepec
Гость
« Ответ #6 : Октябрь 29, 2012, 14:50 »

Сейчас посмотрю что за закавыка.

Пара секунд размышлений, наследование от QFileDialog -> нахождение selectedFiles() -> профит.

Берёте ваш диалог, переопределяете
Код:
virtual void	accept ()
virtual void changeEvent ( QEvent * e )
virtual void done ( int result )
и у вас кроссплатформенный выбор множества каталогов. Ннэ? ннэ однако Улыбающийся
Если покумекать то спокойно можно сделать. Но у меня желание копаться ушло вместе со свободным временем, лависта Улыбающийся


PS так же постановка флага setAcceptMode(QFileDialog::AcceptSave); не решает вашу проблему?
« Последнее редактирование: Октябрь 29, 2012, 15:28 от Bepec » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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