2016-05-30 37 views
0

在Qt對話框中保存文件,我有多個文件過濾器選項。Qt多個文件過濾器,強制一個擴展

例如,我的過濾器是"Text Files (*.txt, *.pdf);;TXT Files (*.txt);;PDF files(*.pdf)"

這是我的代碼:

QFileDialog dialog(this); 
dialog.setFileMode(QFileDialog::AnyFile); 
dialog.setNameFilter(filter.c_str()); 
dialog.setAcceptMode(QFileDialog::AcceptSave); 
dialog.setWindowTitle(WINDOW_TITLE_EXPORT_CLOUD); 
if (!dialog.exec()) 
    return; 

QString fileName; 
auto fileName = dialog.selectedFiles().at(0); 

現在,用戶可能不會引入文件擴展名,所以它應該是對話的責任,迫使根據所選擇的文件過濾器之一。

對於多個擴展的情況,我可以使用QDialog::setDefaultSuffix(),但這不夠,因爲如果我將默認後綴設置爲例如.pdf,則用戶可以選擇TXT files (*.txt)過濾器,並且我會覆蓋用戶決策。

如何根據所選過濾器強制文件擴展名?

謝謝


也有QFileDialod::selectedNameFilter(),但在此基礎上我的代碼將迫使我來檢查文件是否存在之後,不重寫(Is there a way to automatically add extensions to a file using QFileDialog on Linux

回答

0

你可以之後才做。

您可以獲得selectedNameFilter。 然後,您應該檢查選定的文件名是否與selectedNameFilter具有相同的擴展名。

如果它們不相同,可以選擇添加它,或更改擴展名。

+0

這個問題是,如果文件存在與改變的擴展名,我將不得不調用默認的「覆蓋」對話框。 – manatttta

相關問題