在用于保存文件的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()
,但是基于此我的代码会迫使我事后检查文件是否存在,以免覆盖(有没有办法在 Linux 上使用 QFileDialog 自动向文件添加扩展名)
你只能在之后这样做。
你可以得到selectedNameFilter
.然后,您应该检查所选文件名是否与selectedNameFilter
具有相同的扩展名。
如果它们不同,您可以选择添加它或更改扩展名。