Спокойный QFileDialog - собственные диалоговые окна только со статическими функциями?

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

Я не полностью потерял бы собственное диалоговое окно сохранения только для этого. должностное лицо () не перегружается от QDialog, таким образом, он полностью обходит собственный рычаг (игнорирующий опцию DontUseNativeDialog, даже если это - ложь).

Если бы я отключаю предупреждение перезаписи файла и добавляю суффикс по умолчанию сам после функциональных возвратов, то я вновь открыл бы диалоговое окно, если бы пользователь не хотел перезаписывать..., и это просто ужасно.

Есть ли некоторый сигнал, я могу поймать и быстро ввести суффикс по умолчанию, если это не там? Я предполагаю не, так как это - собственное диалоговое окно.

Есть ли что-то, что я делаю неправильно с фильтром? У меня только есть один выбор фильтра. Это должно использовать то расширение.

Это кажется довольно хромым. Запуск диалогового окна сохранения и просто ввод "теста" никогда не должны приводить к файлу без расширения. "тест"., да. не "протестируйте" путь. Это действительно смутит пользователей, когда они поразят Загрузку и не видят файл, они просто сохранили.

Я предполагаю, что межплатформенная часть QT дает мне диалоговую функциональность файла наименьшего общего знаменателя?

7
задан darron 9 April 2010 в 16:27
поделиться

2 ответа

Да, если вы посмотрите исходный код Qt, очевидно, что только статические функции используют собственные файловые диалоги . К сожалению, невозможно получить собственные диалоговые окна каким-либо другим способом ...

5
ответ дан 7 December 2019 в 12:17
поделиться

Вы пробовали использовать параметры фильтра в статических функциях? [Edit: Упс, заметил, что у вас уже есть.]

Я просто пробовал это сам, например, и все кажется довольно разумным:

QString filter = "Text files (*.txt)";
QString selectedFilter;
QString filename = QFileDialog::getSaveFileName(0, "", "", filter, &selectedFilter);

Ввод test в диалоговом окне сохранения возвращает ] test.txt .
Вход в тест . в диалоговом окне сохранения возвращает test..txt .
Ввод test.foo в диалоговом окне сохранения возвращает test.foo .

Все они показывают соответствующий диалог перезаписи, если уже существует файл с таким именем.

Единственный способ получить test без каких-либо суффиксов - это заключить его в кавычки ( "test" ) или сначала ввести *. * (что заставит его отображать все файлы), а затем ввести тест . (Хотя одна странность в том, что selectedFilter по-прежнему будет содержать фильтр, показанный в диалоговом окне, даже если он не используется).

0
ответ дан 7 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: