2012-05-03 52 views
0

我目前正在測試在MacOS X.6下爲windows編寫的軟件。而且大多數東西已經可以工作了,但是目前我遇到了一件事: Mac下的原生SaveFileName對話框。如何在MacOS下使用QFileDialog :: getSaveFileName(...)

QString fileName = m_sSaveAsDir + "untitled." + m_sFileExtension; 
qDebug() << "File Extension:" << m_sFileExtension; //"jpg" 
qDebug() << "SaveDir:" << m_sSaveAsDir; //"" 
qDebug() << "Filename:" << fileName; //Filename: "untitled.jpg" 
fileName = QFileDialog::getSaveFileName(0, tr("Save As"), 
      fileName, tr("Images (*.dng *.tif *.jpg)"), 0, 0); 
qDebug() << "Filename:" << fileName; //Filename: "//...../Pictures/untitled.dng" 

所以,很顯然前者擴展JPG是Mac系統下被忽略,因此不顯示或保存。這對我來說很好。 進一步的Qt手冊說,在MacOS下,過濾器被忽略。如果我在SaveDialog中查看瀏覽器中的文件夾(文件未被過濾),這是正確的。但是,似乎過濾器的第一個擴展名只是作爲擴展名使用,只要沒有擴展名輸入到fieldialog中,這非常煩人。 我該如何解決這個問題? 我試圖通過將getSaveFileName()方法中的最後一個參數更改爲「DontUseNativeDialog」來嘗試使用NonNativeSaveDialog,該方法非常有效,但看起來不太好。 有什麼建議嗎?

問候唐尼

回答

0

您可以構建使用非靜態的QF​​ileDialog方法對話框自己。按照QFileDialog docs對於這一點,然後看看到QFileDialog::setDefaultSuffix(),您可以設置爲空字符串,像這樣:

dialog.setDefaultSuffix(QString()); 

然後什麼都不會被自動添加到文件的末尾。我沒有Mac來方便測試,但它應該可以工作。

相關問題