正确用法
QFileDialog dialog(this, "Save File", QDir::currentPath(), "Text Files (.txt)");
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDefaultSuffix("txt"); // <<==
if (!dialog.exec())return;
QString fileName = dialog.selectedFiles().first();
qDebug() << fileName;
setDefaultSuffix
接口在文件名没有后缀的情况下会自动添加默认后缀名,如果有后缀名则不添加,这里的“文件名”指的是dialog中这一栏的值。如果是abc
则返回的是路径+abc.txt
,如果是abc.jpg
则返回的是路径+abc.jpg
。注意传入的参数不带’."
setAcceptMode
用于标识是打开文件还是保存文件,对于保存文件模式,只有文件名不为空时才能点击保存,此时exec()
返回1,且selectedFiles
只有一个文件名。
构造函数的第一个参数是parent第二个参数是dialog标题,第三个参数是默认打开的文件路径,如果文件路径带有文件名则文件名会自动填入文件名一栏中,第四个参数是过滤的文件类型,括号里面是扩展名,括号前面是扩展名的文件类型描述。
对于static QFileDialog::getSaveFileName
方法,返回的文件名是不带后缀的,也无法通过设置default suffix来改变此行为,因为dialog是方法内部创建的,我们无法访问到。