Qt-QFileDialog保存文件及获取带扩展名的文件名

正确用法

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是方法内部创建的,我们无法访问到。

你可能感兴趣的:(Qt,qt,数据库,开发语言,QFileDialog,保存)