Mac 沙箱的 QFileDialog 和 setDefaultSuffix
QFileDialog and setDefaultSuffix for Mac Sandbox
我想在 QFileDialog
中设置默认文件扩展名,以便在我的应用程序中保存文件(在 mac 应用程序商店沙箱中需要 运行)。 mac 上 setDefaultSuffix
的默认行为(没有沙箱)是它向用户输入的任何名称添加扩展名。
当沙盒打开时,这会有所不同;它只是在交互开始时添加扩展名字符串,但是当用户删除建议的文件名(带扩展名)并输入一个没有扩展名的文件时,来自 QFileDialog
的文件不包含后缀。有没有办法破解对话框以使其在沙盒中以相同的方式运行?
我正在使用 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)
过滤器设置为仅允许您需要的扩展。
我想在 QFileDialog
中设置默认文件扩展名,以便在我的应用程序中保存文件(在 mac 应用程序商店沙箱中需要 运行)。 mac 上 setDefaultSuffix
的默认行为(没有沙箱)是它向用户输入的任何名称添加扩展名。
当沙盒打开时,这会有所不同;它只是在交互开始时添加扩展名字符串,但是当用户删除建议的文件名(带扩展名)并输入一个没有扩展名的文件时,来自 QFileDialog
的文件不包含后缀。有没有办法破解对话框以使其在沙盒中以相同的方式运行?
我正在使用 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)
过滤器设置为仅允许您需要的扩展。