QT QFileDialog - родные диалоги только со статическими функциями?

StackOverflow https://stackoverflow.com/questions/2609119

  •  25-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это кажется довольно хромой. Запуск диалогового окна «Сохранить» и просто набрав «тест», никогда не должен приводить к файлу без экстенсировки. «Тест». «Да. «Тест« Нет пути. Это действительно путает пользователей, когда они бьют нагрузку и не могут видеть файл, который они просто сохранены.

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

Это было полезно?

Решение

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

Другие советы

Вы пробовали параметры фильтра в статические функции? [Править: Ой, заметил, что у вас уже есть.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top