2015-07-28 147 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