crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QFileDialog::getSaveFileName() возвращает имя файла без расширения.
Анна
  опции профиля:
сообщение 23.1.2017, 16:07
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 290
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 25 раз(а)




Репутация:   4  


Увы, если в диалоге QFileDialog::getSaveFileName() меняю имя, подставленное по умолчанию возвращается имя без расширения.
Если просто нажать в диалоге ОК, возвращённое имя будет содержать расширение.
Что это ? Баг винды, или я чего-то не допонимаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 24.1.2017, 7:56
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2920
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 202 раз(а)




Репутация:   35  


Анна, попробуй


void QFileDialog::setDefaultSuffix(const QString &suffix)


Сообщение отредактировал Алексей1153 - 24.1.2017, 7:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.1.2017, 6:52
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9687
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 771 раз(а)




Репутация:   94  


Цитата(Анна @ 23.1.2017, 18:07) *
меняю имя, подставленное по умолчанию
я так понимаю при этом ты расширение не вводишь?
тогда видимо нужен алгоритм при котором нужно анализировать имя, если суфикса не имеет, то смотреть что вернёт аргумент "selectedFilter" этой статической функции.


Алексей1153, вроде на статические функции этого класса эта установка не влияет, надо бы проверить

Цитата(Litkevich Yuriy @ 25.1.2017, 8:28) *
я так понимаю при этом ты расширение не вводишь?
На Вин7 если я затираю расширение и нажимаю "Открыть" в диалоге, то винда сама говорит либо "Не допустимое имя файла", либо "Файл не найден"
Прикрепленное изображение

П.С. воспользовался примером Qt: Standard Dialogs

=======================================================================

прошу прощения, не тот диалог вызывал, вместо Сохранения вызывался Открытие

Для диалога сохранения проблемы на Вин7 не наблюдается:
Прикрепленное изображение

результат
Прикрепленное изображение


Сообщение отредактировал Litkevich Yuriy - 25.1.2017, 6:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 27.1.2017, 17:32
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 290
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 25 раз(а)




Репутация:   4  


Цитата(Алексей1153 @ 24.1.2017, 7:56) *
попробуй

Пробовала.
Никакой реакции.

Цитата(Litkevich Yuriy @ 25.1.2017, 6:52) *
я так понимаю при этом ты расширение не вводишь?

Я передаю полный путь до файла (вместе с суффиксом) и список расширений и расширение по умолчанию. Внутри диалога полный путь разделяется на каталог, имя файла и расширение. Если имя файла не меняю, сразу жму Enter, мне возвращается исходная строка (расшиерние на месте). Если имя файла меняю, мне возвращается строка без расширения - путь к каталогу и имя файла.

Пришлось поставить проверку. Не сложно, но это всё же неприятный момент.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2017, 23:38
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9687
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 771 раз(а)




Репутация:   94  


Цитата(Анна @ 27.1.2017, 19:32) *
Если имя файла меняю
я именно про этот момент спрашивал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 31.1.2017, 10:57
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 290
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 25 раз(а)




Репутация:   4  


Цитата(Litkevich Yuriy @ 28.1.2017, 23:38) *
Цитата(Анна @ 27.1.2017, 19:32) *
Если имя файла меняю
я именно про этот момент спрашивал

Конечно, расширение я при этом не ввожу, оно же выбирается в комбобоксе ниже.
В общем, не знаю, чья это лажа, но то, что после вызова диалога ещё требуется анализ результата, это не комильфо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 31.1.2017, 11:00
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9687
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 771 раз(а)




Репутация:   94  


У меня на Вин7 такого не наблюдается, а у тебя какая ОСька?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 31.1.2017, 11:27
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 290
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 25 раз(а)




Репутация:   4  


Цитата(Litkevich Yuriy @ 31.1.2017, 11:00) *
У меня на Вин7 такого не наблюдается, а у тебя какая ОСька?

тоже 7.

Цитата(Litkevich Yuriy @ 25.1.2017, 6:52) *
прошу прощения, не тот диалог вызывал, вместо Сохранения вызывался Открытие

Для диалога сохранения проблемы на Вин7 не наблюдается:

Если ты в этом примере выделенное d сотрёшь и снова введёшь d, то тебе уже не сообщат, что такой файл уже имеется, потому что будет проверяться имя файла не "d.txt", а "d", то, что ниже указан тип файла, диалог не интересует. То есть, если ты меняешь имя, диалог подсоединит к нему путь, но не подсоединит указанное расширение. У меня, во всяком случае, именно так происходит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 31.1.2017, 12:29
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9687
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 771 раз(а)




Репутация:   94  


Цитата(Анна @ 31.1.2017, 13:27) *
Если ты в этом примере выделенное d сотрёшь и снова введёшь d,
именно так я и делал, кроме того я наплодил несколько однобуквенных файлов и повсякому менял, твоя проблема не проявилась


Да к стати проверял на Qt 5.7.0
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 31.1.2017, 14:13
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 290
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 25 раз(а)




Репутация:   4  


Цитата(Litkevich Yuriy @ 31.1.2017, 12:29) *
Да к стати проверял на Qt 5.7.0

У меня 5.5.
Но мне кажется, дело не в QT. Ведь проверка на совпадение имён проверяется внутри системного диалога (хотя, уже не уверена), во всяком случае до его закрытия. В общем, как ни крути, а возвращаемое значение зависит не только от того, что введено или выбрано в полях на момент нажатия кнопки "Сохранить", но и от действий пользователя внутри диалога: нажал кнопку сразу – вернут имя с расширением, набрал такое же имя – вернут имя отдельно, расширение отдельно.

имхо, не удобно это для программиста. Хотя особых сложностей тоже не создаёт.

Думаю, на этом можно закончить.

Сообщение отредактировал Анна - 31.1.2017, 14:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.3.2017, 11:08