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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Стандартный диалог выбора папки  (Прочитано 8979 раз)
Paramon
Гость
« : Декабрь 22, 2014, 17:29 »

Qt 4.8.6

Вопрос тривиальный - как отобразить окно выбора папки такое же, как через винапишную функцию SHBrowseForFolder? Может флаги какие? Или это в принципе невозможно, кроме как использовать тот же SHBrowseForFolder?

Хочу вот такой диалог  Непонимающий

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

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Декабрь 22, 2014, 18:04 »

Можно немного другой диалог вызвать:
QFileDialog::​getExistingDirectory
Записан
Paramon
Гость
« Ответ #2 : Декабрь 23, 2014, 10:40 »

Так в том то и дело, что "немного" другой. А я бы хотел как на скрине. Привязываться к функциям WinAPI не хотелось бы.
Если средствами Qt это сделать невозможно - я отстану. Но надежда есть.  Грустный
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #3 : Декабрь 23, 2014, 10:42 »

На сколько я помню, именно такой диалог из Кьюта не вызвать. Могу и ошибаться. Но никто тебе не мешает сделать сою реализацию на винапи конкретно для винды.
Записан

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

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Декабрь 23, 2014, 10:44 »

Я в папке qt src выполнил поиск на предмет содержания SHBrowseForFolder в файле.
В qtbase\src\plugins\platforms\windows нашёлся qwindowsdialoghelpers.cpp
Правда, я так и не разобрался, как сделать так, чтобы вызывался SHBrowseForFolder
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #5 : Декабрь 23, 2014, 10:46 »

Попробуй глянуть
void QFileDialog::​setOption(Option option, bool on = true) опцию QFileDialog::DontUseNativeDialog
Записан

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

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Декабрь 23, 2014, 11:03 »

Ды не, там тогда строится какой-то преднастроенный диалог, не нативный.
Записан
Paramon
Гость
« Ответ #7 : Декабрь 24, 2014, 11:34 »

Что интересно - на WindowsXP диалог такой как у меня на скрине. А вот уже на семёрке не то.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #8 : Декабрь 24, 2014, 11:43 »

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

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #9 : Декабрь 24, 2014, 11:44 »

В самой семерке же видоизменили диалоги.
Записан

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

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

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #11 : Декабрь 24, 2014, 11:58 »

У меня такое предположение, что в 7 появился новый диалог выбора каталога и Кьют юзает его. Соответственно, под этот диалог появилась новая винапишная функция. Но старая осталась и стрые проги юзают ее. Могу ошибаться. Зачем копаться в Кьюте, если можно у себя сделать обертку, которая будет вызывать диалог через винапишную функцию? Там, думаю, реализация будет тривиальной.
Записан

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

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

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #13 : Декабрь 24, 2014, 12:06 »

http://bit.ly/1x3jHbE
Записан

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

Сообщений: 2130



Просмотр профиля
« Ответ #14 : Декабрь 24, 2014, 12:42 »

Или есть вариант свой такой же нарисовать  Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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