Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: AD от Декабрь 30, 2008, 13:05



Название: Работа с getOpenFileName
Отправлено: AD от Декабрь 30, 2008, 13:05
Добрый день. Проблема в том, что периодически на работе ломается локальный сервак, из-за этого функция getOpenFileName виснет, т.к. пытается  залезть по указанным путям. Проверялось это так: диалог нормально выскакивал, как только отрубал сеть. Как заставить указанную функцию не лезть в сетевые ресурсы, а отображать только диски "My Computer"! Заранее благодарен. :)


Название: Re: Работа с getOpenFileName
Отправлено: Dendy от Декабрь 31, 2008, 18:38
QFileDialog::getOpenFileName() как и остальные статические методы QFileDialog вызывают системные диалоги. Больше опций чем тот список аргументов что они принимают нет. Это проблема исключительно вашей операционной системы. Как вариант можно использовать родной QFileDialog, одинаковый для всех платформ. Лично я так делаю под иксами, так как текущий диалог из KDE4 для меня тоже работает не шустро и временами глючит.


Название: Re: Работа с getOpenFileName
Отправлено: AD от Январь 03, 2009, 18:46
Цитировать
Как вариант можно использовать родной QFileDialog, одинаковый для всех платформ. Лично я так делаю под иксами, так как текущий диалог из KDE4 для меня тоже работает не шустро и временами глючит.
Какой именно родной диалог? Ну совсем понял? Родная система (ОС) - Windows XP. Хотелось бы узнать, как обойти эту проблему? Использовать Windows-API функции? Но ведь это не очень удобно, если учесть, что я использую Qt! При этом стараюсь выдержать кроссплатформенность. Небольшой кусок кода, зависящий от системы, взят в специальные препроцессорные условия.


Название: Re: Работа с getOpenFileName
Отправлено: Dendy от Январь 03, 2009, 19:03
Имеется в виду использовать не статический метод (создающий родной для ОС диалог), а сам QFileDialog, одинаковый для всех платформ:

Код:
QFileDialog fileDialog;
fileDialog.set*( ... );
...
fileDialog.exec();
QStringList files = fileDialog.selectedFiles();


Название: Re: Работа с getOpenFileName
Отправлено: pastor от Январь 03, 2009, 21:03
Использовать Windows-API функции? Но ведь это не очень удобно, если учесть, что я использую Qt!

QFileDialog::getOpenFileName()  как раз и есть обверстка над Windows-API. Как уже сказал Dendy, статические функции QFileDialog юзают нативные диалоги.


Название: Re: Работа с getOpenFileName
Отправлено: AD от Январь 09, 2009, 20:02
Цитировать
QFileDialog::getOpenFileName()  как раз и есть обверстка над Windows-API. Как уже сказал Dendy, статические функции QFileDialog юзают нативные диалоги.
Это-то я понимаю! Я не знал что именно родное Qt-шное надо использовать. Спасибо, через несколько дней поэкспериментирую! :)