Я хотел бы установить расширение файла по умолчанию в QFileDialog
для сохранения файлов в моем приложении (необходимо запустить в песочнице магазина приложений Mac). Поведение по умолчанию setDefaultSuffix
на Mac (без песочницы) это то, что он добавляет расширение к любому имени, которое вводит пользователь.
Это работает по-другому, когда песочница включена; он просто добавляет строку расширения в начале взаимодействия, но когда пользователь удаляет предложенное имя файла (с расширением) и вводит его без расширения, файл из QFileDialog
не включает суффикс. Есть ли способ взломать Dialog, чтобы вести себя так же в песочнице?
Я использую Qt 4.8.5 (сейчас нет возможности обновить)
Я не думаю, что вы можете изменить поведение песочницы Mac, но вы можете добавить простой обходной путь для Mac, например:
QString suffix = ".txt"; // your suffix here
QString fileName = ... // get filename after QFileDialog work
QFileInfo file(filename);
if(file.suffix().isEmpty()) fileName += suffix ;
Оказывается, использование статического метода для отображения QFileDialog позволяет использовать правильный суффикс по умолчанию для работы в песочнице Mac, поэтому вместо создания экземпляра QFileDialog и установки суффикса по умолчанию просто используйте:
getSaveFileName(QWidget * parent = 0, const QString & caption = QString(),
const QString & dir = QString(), const QString & filter = QString(),
QString * selectedFilter = 0, Options options = 0)
с установленным фильтром, чтобы разрешить только нужные вам расширения.