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