Название: Стандартный диалог выбора папки Отправлено: Paramon от Декабрь 22, 2014, 17:29 Qt 4.8.6
Вопрос тривиальный - как отобразить окно выбора папки такое же, как через винапишную функцию SHBrowseForFolder? Может флаги какие? Или это в принципе невозможно, кроме как использовать тот же SHBrowseForFolder? Хочу вот такой диалог ??? (http://savepic.org/6657646.png) Название: Re: Стандартный диалог выбора папки Отправлено: __Heaven__ от Декабрь 22, 2014, 18:04 Можно немного другой диалог вызвать:
QFileDialog::getExistingDirectory Название: Re: Стандартный диалог выбора папки Отправлено: Paramon от Декабрь 23, 2014, 10:40 Так в том то и дело, что "немного" другой. А я бы хотел как на скрине. Привязываться к функциям WinAPI не хотелось бы.
Если средствами Qt это сделать невозможно - я отстану. Но надежда есть. :( Название: Re: Стандартный диалог выбора папки Отправлено: Пантер от Декабрь 23, 2014, 10:42 На сколько я помню, именно такой диалог из Кьюта не вызвать. Могу и ошибаться. Но никто тебе не мешает сделать сою реализацию на винапи конкретно для винды.
Название: Re: Стандартный диалог выбора папки Отправлено: __Heaven__ от Декабрь 23, 2014, 10:44 Я в папке qt src выполнил поиск на предмет содержания SHBrowseForFolder в файле.
В qtbase\src\plugins\platforms\windows нашёлся qwindowsdialoghelpers.cpp Правда, я так и не разобрался, как сделать так, чтобы вызывался SHBrowseForFolder Название: Re: Стандартный диалог выбора папки Отправлено: Пантер от Декабрь 23, 2014, 10:46 Попробуй глянуть
void QFileDialog::setOption(Option option, bool on = true) опцию QFileDialog::DontUseNativeDialog Название: Re: Стандартный диалог выбора папки Отправлено: __Heaven__ от Декабрь 23, 2014, 11:03 Ды не, там тогда строится какой-то преднастроенный диалог, не нативный.
Название: Re: Стандартный диалог выбора папки Отправлено: Paramon от Декабрь 24, 2014, 11:34 Что интересно - на WindowsXP диалог такой как у меня на скрине. А вот уже на семёрке не то.
Название: Re: Стандартный диалог выбора папки Отправлено: __Heaven__ от Декабрь 24, 2014, 11:43 Да, если покапаться в классах - там явно видно, что такой существует только в XP
Название: Re: Стандартный диалог выбора папки Отправлено: Пантер от Декабрь 24, 2014, 11:44 В самой семерке же видоизменили диалоги.
Название: Re: Стандартный диалог выбора папки Отправлено: Paramon от Декабрь 24, 2014, 11:48 В самой семерке же видоизменили диалоги. Ну как это видоизменили, если даже системные утилиты на семёрке отображают диалог как на скрине.Я так понимаю - иного выхода, как ковыряться в классах Qt и собирать его из сорцов, нет? Название: Re: Стандартный диалог выбора папки Отправлено: Пантер от Декабрь 24, 2014, 11:58 У меня такое предположение, что в 7 появился новый диалог выбора каталога и Кьют юзает его. Соответственно, под этот диалог появилась новая винапишная функция. Но старая осталась и стрые проги юзают ее. Могу ошибаться. Зачем копаться в Кьюте, если можно у себя сделать обертку, которая будет вызывать диалог через винапишную функцию? Там, думаю, реализация будет тривиальной.
Название: Re: Стандартный диалог выбора папки Отправлено: Paramon от Декабрь 24, 2014, 12:03 Зачем копаться в Кьюте, если можно у себя сделать обертку, которая будет вызывать диалог через винапишную функцию? Там, думаю, реализация будет тривиальной. Что-то типа если компилим под винду - вызываем винапишную функцию, иначе стандартную.Последний вопрос - как понять, под что мы собираем? Название: Re: Стандартный диалог выбора папки Отправлено: Пантер от Декабрь 24, 2014, 12:06 http://bit.ly/1x3jHbE
Название: Re: Стандартный диалог выбора папки Отправлено: __Heaven__ от Декабрь 24, 2014, 12:42 Или есть вариант свой такой же нарисовать :)
Название: Re: Стандартный диалог выбора папки Отправлено: Igors от Декабрь 24, 2014, 13:06 ...если можно у себя сделать обертку, которая будет вызывать диалог через винапишную функцию? Там, думаю, реализация будет тривиальной. Если конкретно SHBrowseForFolder - то видимо да. Но для "новых" диалогов (Win7) таких удобных ф-ций API нет, надо юзать какой-то SDK, иметь какие-то доп хедеры (уж и забыл как называются). В общем, приключений хватаетИли есть вариант свой такой же нарисовать :) Подобные бодрые предложения основываются на том что диалог - всего лишь "панельки/кнопочки" которые легко нахрюкать в любой приличной либе. В действительности это даже не 10% работы. Как-то в 90-х думали также, и связались на свою голову - НИКОГДА больше!!Название: Re: Стандартный диалог выбора папки Отправлено: Пантер от Декабрь 24, 2014, 13:12 ...если можно у себя сделать обертку, которая будет вызывать диалог через винапишную функцию? Там, думаю, реализация будет тривиальной. Если конкретно SHBrowseForFolder - то видимо да. Но для "новых" диалогов (Win7) таких удобных ф-ций API нет, надо юзать какой-то SDK, иметь какие-то доп хедеры (уж и забыл как называются). В общем, приключений хватаетНазвание: Re: Стандартный диалог выбора папки Отправлено: Alex Custov от Декабрь 24, 2014, 14:02 У меня такое предположение, что в 7 появился новый диалог выбора каталога и Кьют юзает его. Насколько я помню - IFileDialog со всеми прелестями COM. |