Qt多个文件过滤器,强制一个分机

时间:2016-05-30 10:32:06

标签: c++ 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

1 个答案:

答案 0 :(得分:0)

之后你才能做到。

您可以获得selectedNameFilter。 然后,您应检查所选文件名是否与selectedNameFilter具有相同的扩展名。

如果它们不相同,您可以选择添加它,或更改扩展名。