在用于保存文件的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 :(得分:0)
之后你才能做到。
您可以获得selectedNameFilter
。
然后,您应检查所选文件名是否与selectedNameFilter
具有相同的扩展名。
如果它们不相同,您可以选择添加它,或更改扩展名。