2014-04-23 18 views
1

使用QFileDialog,我想提示用戶輸入文件名並在缺失擴展名時添加。追加缺少的擴展名爲QFileDialog的結果

一個建議是在事實之後手動添加擴展名。這種方法的問題是,用戶可能不會被警告他們正在覆蓋文件(例如,test.txt存在,用戶輸入測試並沒有提示他們實際上覆蓋test.txt

我已閱讀關於QFileDialog的所有文檔,並沒有取得任何成功。我試過setDefaultSuffix,但fileDialog.getSaveFileName()的結果不包含擴展名。有人能提供一個如何成功做到這一點的例子嗎?

回答

2

不幸的是,當您使用「本機」文件對話框時,它看起來像這個功能不可用。但是,如果您使用Qt文件對話框,它的工作方式與您的預期相同。

這裏是你如何使用Qt的文件對話框:

QFileDialog saveDialog; 
saveDialog.setAcceptMode(QFileDialog::AcceptSave); 
saveDialog.setDefaultSuffix("txt"); 
saveDialog.exec(); 
QString file = saveDialog.selectedFiles().first(); 

作爲替代方案,您可以實現自己的覆蓋驗證:

QString file; 
do 
{ 
    file = QFileDialog::getSaveFileName(); 
    if(!file.endsWith(".txt")) 
    { 
    file.append(".txt"); 

    if(QFile::exists(file)) 
    { 
     if(QMessageBox::Yes != QMessageBox::question(NULL, QString(), "Confirm overwrite?", QMessageBox::Yes | QMessageBox::No)) 
     { 
     file.clear(); 
     } 
    } 
    } 
} while (file.isEmpty()); 
+0

感謝。實際上,第一個樣本在本地和QT對話框中都像魅力一樣工作。我猜'saveDialog.getSaveFileName()'快捷方式功能不完全相同。 – pauld