Название: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: @!!ex от Февраль 18, 2010, 15:27 Вот такой код:
Код: QString FileName = QFileDialog::getOpenFileName(0,tr("Выберите файл проекта"),"",tr("Проекты локализации (*.lpf)")); Запускаю еще раз - диалог не появляется, FileName=="" Зависимости не нашел. Несколько запусков работает, один-два не работает, потом опять все норм. в Qt совсем недавно, даже предположить не могу в чем может быть проблема. Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: shirushizo от Февраль 18, 2010, 16:50 Сам диалог отображается?
Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: @!!ex от Февраль 18, 2010, 16:52 Нет. Диалог не отображается.
FileName просто инициализируется пустой строкой и продолжается выполнение программы. P.S. ОС Win XP Pro компилятор: mingw32 используется динамическая линковка Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: Sancho_s_rancho от Февраль 19, 2010, 20:49 А слот-то этот вообще вызывается?
Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: @!!ex от Февраль 19, 2010, 20:50 Да. и getFileOpenDialog тоже вызывается. Только диалог не показывает, а возвращает сразу пустую строку.
Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: Sancho_s_rancho от Февраль 19, 2010, 21:03 В примерах, в каталоге dialogs, есть пример standarddialogs где вызывается эта же статическая функция. Он у вас без проблем работает?
Остается ли проблема если вместо 0 передаете родителя this? На виндовс при использовании статической функции вызывается родной диалог виндов. Остается ли проблема если Qt использует свой (QFileDialog dialog(this); и бла-бла-бла)? Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: @!!ex от Февраль 20, 2010, 00:49 Примеры тестировать пока некогда.
Создал QFileDialog dialog(this); работает стабильно. Единственное - тормозит при запуске. Отображается окно, потом секунд 5 думает. Код: QFileDialog dialog(this); Но все таки хотелось бы узнать почему WinAPI диалог не пашет. :( UPD: 0 или this - для нативного диалога роли не играет. одинаково глючит. Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: shirushizo от Февраль 20, 2010, 08:18 1. В винде могут тупить вызовы без объектов QFileDialog::getOpenFileName.
2. Объект может создаваться и тут же дохнуть (наверно слот завершается быстрее, чем показывается окно, т.е. несрабатывает какое-то прерывание/задержка), поэтому лучше пользовать указатели С родителем: Код: QFileDialog* mdialog= new QFileDialog; Код: QFileDialog* mdialog= new QFileDialog; Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: lit-uriy от Февраль 20, 2010, 08:55 >>1. В винде могут тупить вызовы без объектов QFileDialog::getOpenFileName.
Никогда не наблюдал >>2. Объект может создаваться и тут же дохнуть (наверно слот завершается быстрее, чем показывается окно, т.е. >> несрабатывает какое-то прерывание/задержка), поэтому лучше пользовать указатели Вообще чушь, как слот может завершится быстрее, чем выполнится функция QFileDialog::getOpenFileName ??? Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: shirushizo от Февраль 20, 2010, 12:32 Вообще чушь, как слот может завершится быстрее, чем выполнится функция QFileDialog::getOpenFileName ??? Чесно говоря не знаю, но было несколько раз такое: окошко диалога моргнуло и все опять фокус на главное окно. Может причина в чем-то другом, но я ее понял имено так: Создается объект, вызывается метод(собстно оконшко моргнуло) и завершается метод/слот. Выход за область видимости и диалог благополучно умирает. Сама система не ждет выбора файла и нажатия кнопки :o. Грешил на кривую сборку Qt и свои кривые руки, но уже у нескольких людей такой глюк и именно под виндой. Если есть другие идеи относительно возникновения выслущаю и буду благодарен. Название: Re: Периодически не вызывается диалог в QFileDialog::getOpenFileName Отправлено: SABROG от Февраль 20, 2010, 14:23 Если есть другие идеи относительно возникновения выслущаю и буду благодарен. Такое может происходить только в одном случае - класс на базе QDialog создается на стеке (не через new) и затем используется метод show()/open() вместо exec(). Запускаю еще раз - диалог не появляется, FileName=="" Может быть дело всё-таки в другом? В том, что передав 0 в качестве родителя диалог появляется позади главного окна и ты его просто не видишь? |