2015-07-28 144 views
1

我想在QFileDialog中设置默认文件扩展名,以便在我的应用程序中保存文件(它需要在mac应用商店沙箱中运行)。 mac(不含沙箱)上setDefaultSuffix的默认行为是为用户输入的任何名称添加扩展名。QFileDialog和setDefaultSuffix for Mac Sandbox

当沙箱启用时,此功能会有所不同;它只是在交互开始时添加扩展字符串,但当用户删除建议的文件名(带扩展名)并输入一个没有扩展名的文件时,QFileDialog中的文件不包含后缀。有没有办法破解Dialog在沙盒中的行为方式?

我使用Qt 4.8.5(没办法,现在升级)

回答

1

事实证明,使用静态方法来显示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) 

将过滤器设置为仅允许您需要的扩展名。

1

我不认为你可以改变的Mac沙箱的行为,但你可以为Mac添加简单的解决方法类似:

QString suffix = ".txt"; // your suffix here 
QString fileName = ... // get filename after QFileDialog work 
QFileInfo file(filename); 
if(file.suffix().isEmpty()) fileName += suffix ; 
+0

谢谢,但这是行不通的。沙箱规则不允许用户在QFileDialog中更改用户输入的名称:( – jakumate

+0

@jakumate然后这可能解释了为什么在用户在沙箱中输入内容后Qt无法添加后缀? – demonplus