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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QFileDialog - не правильно работает под MAC  (Прочитано 12936 раз)
spectre71
Гость
« : Август 29, 2009, 13:32 »

Заданы режимы QFileDialog::AnyFile и QFileDialog::AcceptOpen. В данном случае позволяется выбор существующего файла, а также ввод имени файла.
Корректно работает под Windows и Linux.
Однако, под Mac, поле ввода для имени файла не появляется!
Баг?

Код
C++ (Qt)
 QFileDialog dialog(this);
 dialog.setFileMode  (QFileDialog::AnyFile);
 dialog.setWindowTitle("Set File");
 dialog.setAcceptMode(QFileDialog::AcceptOpen);
 dialog.setViewMode  (QFileDialog::List);
 dialog.exec();

В режиме QFileDialog::AcceptSave; работает правильно.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Август 29, 2009, 14:18 »

Просто в нативном Mac файл диалоге нет строки ввода  Улыбающийся
Если она все же нужна, используйте не-нативный

dialog.setOption(QFileDialog::DontUseNativeDialog, true);
Записан
spectre71
Гость
« Ответ #2 : Август 29, 2009, 14:35 »

Просто в нативном Mac файл диалоге нет строки ввода  Улыбающийся
Если она все же нужна, используйте не-нативный

dialog.setOption(QFileDialog::DontUseNativeDialog, true);

Во-первых Есть!
Во-вторых в доке по QFileDialog, нет упоминаний на ограничения для Mac!
В-третьих в режиме QFileDialog::AcceptSave, строка появляется, но дерево навигиции не раскрыто(как при QFileDialog::AcceptOpen), приходиться раскрывать ручками.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Август 29, 2009, 14:59 »

Во-первых Есть!
Запускаем что-нибудь ходовое, например TextEdit. Нажимаем Command-O
(см. attachment). Не вижу строки ввода а только строку search  Улыбающийся
Во-вторых в доке по QFileDialog, нет упоминаний на ограничения для Mac!
В-третьих в режиме QFileDialog::AcceptSave, строка появляется, но дерево навигиции не раскрыто(как при QFileDialog::AcceptOpen), приходиться раскрывать ручками.
В первый раз - да, потом дерево будет раскрыто. Как и для любого другого application.
Записан
spectre71
Гость
« Ответ #4 : Август 29, 2009, 15:09 »

Запускаем что-нибудь ходовое, например TextEdit. Нажимаем Command-O
Есть в режиме QFileDialog::AcceptSave, а значит в Mac есть диалог! Но QT делает неправильный вызов для режима QFileDialog::AcceptOpen + QFileDialog::AnyFile!
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Август 29, 2009, 15:58 »

Есть в режиме QFileDialog::AcceptSave, а значит в Mac есть диалог! Но QT делает неправильный вызов для режима QFileDialog::AcceptOpen + QFileDialog::AnyFile!
Пережил 3 поколения нативных файл диалогов в Mac (каждый раз приходилось переписывать программы). Но ни разу не видел строку ввода чтобы в режиме "Open"  Улыбающийся Конечно, можно ее добавить через customize, но то глухой нативняк.
Записан
spectre71
Гость
« Ответ #6 : Август 29, 2009, 16:09 »

Есть в режиме QFileDialog::AcceptSave, а значит в Mac есть диалог! Но QT делает неправильный вызов для режима QFileDialog::AcceptOpen + QFileDialog::AnyFile!
Пережил 3 поколения нативных файл диалогов в Mac (каждый раз приходилось переписывать программы). Но ни разу не видел строку ввода чтобы в режиме "Open"  Улыбающийся Конечно, можно ее добавить через customize, но то глухой нативняк.
Причем здесь это.
Диалог с режимом ввода имени файла в Mac есть, что показывает работа в режиме QFileDialog::AcceptSave. Просто в Qt для QFileDialog::AcceptOpen + QFileDialog::AnyFile вызывается не тот Mac диалог(или возможно не в том режиме) это и есть ошибка троллей.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Август 29, 2009, 16:50 »

Причем здесь это.
Диалог с режимом ввода имени файла в Mac есть, что показывает работа в режиме QFileDialog::AcceptSave. Просто в Qt для QFileDialog::AcceptOpen + QFileDialog::AnyFile вызывается не тот Mac диалог(или возможно не в том режиме) это и есть ошибка троллей.
Нативные файловые диалоги "Open" и "Save" = 2 совершенно разных диалога (по крайней мере на Mac). Разные нативные функции (типа NavGetFile/NavPutFile) используются для каждого, разные нативные ресурсы и т.п. Это 2 разных сервиса, а не 2 режима того же диалога. Для "Open" диалога строки ввода никогда не было, а для "Save" всегда была. Претензии к Qt программистам в данном случае беспочвенны  Улыбающийся   
Записан
spectre71
Гость
« Ответ #8 : Август 29, 2009, 18:37 »

Причем здесь это.
Диалог с режимом ввода имени файла в Mac есть, что показывает работа в режиме QFileDialog::AcceptSave. Просто в Qt для QFileDialog::AcceptOpen + QFileDialog::AnyFile вызывается не тот Mac диалог(или возможно не в том режиме) это и есть ошибка троллей.
Нативные файловые диалоги "Open" и "Save" = 2 совершенно разных диалога (по крайней мере на Mac). Разные нативные функции (типа NavGetFile/NavPutFile) используются для каждого, разные нативные ресурсы и т.п. Это 2 разных сервиса, а не 2 режима того же диалога. Для "Open" диалога строки ввода никогда не было, а для "Save" всегда была. Претензии к Qt программистам в данном случае беспочвенны  Улыбающийся   
Еще раз:
1) В документации про особые свойства QFileDialog под Mac - ничего нет, так что в любом случае Претензии к Qt программистам или Qt документации обоснованы!
2) Меня не волнует что под Mac используются два разных типа диалога или один в разных режимах(про это не знаю, на Mac работаю всего несколько дней). Важно что под Mac для режима QFileDialog::AcceptOpen + QFileDialog::AnyFile можно использовать второй тип диалога(как для QFileDialog::AcceptSave) + желательно сделать раскрытие дерева.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Август 29, 2009, 19:16 »

Spectre, я просто рассказал все что я знаю на Mac по этому поводу (начиная с 1994) . Ecли Вас это не устраивает - это не моя проблема (к счастью не я разрабатываю OSX). Будьте здоровы
Записан
spectre71
Гость
« Ответ #10 : Август 29, 2009, 19:32 »

Spectre, я просто рассказал все что я знаю на Mac по этому поводу (начиная с 1994) . Ecли Вас это не устраивает - это не моя проблема (к счастью не я разрабатываю OSX). Будьте здоровы
Я не против того как сделаны диалоги в системе Mac. Улыбающийся
Я против неправильной реализации на QT или документации.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #11 : Август 29, 2009, 20:31 »

qt обеспечивает _нативный_ вид. Поэтому требовать чтобы под маком было также как в винде, неправильно...
Записан
spectre71
Гость
« Ответ #12 : Август 29, 2009, 20:49 »

qt обеспечивает _нативный_ вид. Поэтому требовать чтобы под маком было также как в винде, неправильно...
Естественно.
Однако, любые особенности, вернее несовместимости(особенности) дожны быть описаны, либо мы считаем это багом!
Между прочим, сабж касается только Mac, под linux так же все нормально.

Я переписал свое приложение с Builder на QT, для переносимости на другие платформы.
Под Windows все работает отлично.
Под Linux еще пока мало тестировал.
Под Mac - очень много QT-х багов. Под Mac гораздо меньше пишут чем под Windows и Linux, соответственно гораздо больше ошибок в QT библиотеке для Mac.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #13 : Август 30, 2009, 02:05 »

Однако, любые особенности, вернее несовместимости(особенности) дожны быть описаны, либо мы считаем это багом!

Вопрос: А причем здесь Qt к нативным диалогам (толи мака, вантуза или линукса)?

Допустим завтра разработчики мака перепишут в корне диалоги или разрабы вантуза уберут поле ввода для имени файла. И что? Это баг Qt? Что должно быть указано в документации? имхо, все претензии к разработчикам оси, что мол диалоги у них не такие как в вантузе, etc.

Igors, +1 за второй пост топика.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
spectre71
Гость
« Ответ #14 : Август 30, 2009, 11:14 »

Однако, любые особенности, вернее несовместимости(особенности) дожны быть описаны, либо мы считаем это багом!

Вопрос: А причем здесь Qt к нативным диалогам (толи мака, вантуза или линукса)?

Допустим завтра разработчики мака перепишут в корне диалоги или разрабы вантуза уберут поле ввода для имени файла. И что? Это баг Qt? Что должно быть указано в документации? имхо, все претензии к разработчикам оси, что мол диалоги у них не такие как в вантузе, etc.

Igors, +1 за второй пост топика.
С таким же успехом можно вызвать левый дилог(не относяйся к выбору файла) и сказать, - "а что вы хотели, пользуйтесь ненативным диалогом" Улыбающийся
Нативный диалог на разных системах выглядит и работает по разному, с этим никто и не спорил.
В Mac есть диалог подходящий для данного режима, и то что разработчики не правильно его используют(или используют не тот диалог) это и есть ошибка. А если бы и небыло, то должно было бы быть упоминание в доке.
А то что "завтра" что-то изменится, - значит измениться версия QT, документация итд. Появится что-то новое, что-то не будет поддерживаться.

« Последнее редактирование: Август 30, 2009, 11:16 от Spectre » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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