Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QFileDialog:保存文件时自动添加扩展名?_C++_Qt_Qt4_Save_Qfiledialog - Fatal编程技术网

C++ QFileDialog:保存文件时自动添加扩展名?

C++ QFileDialog:保存文件时自动添加扩展名?,c++,qt,qt4,save,qfiledialog,C++,Qt,Qt4,Save,Qfiledialog,当使用QFileDialog保存文件并指定扩展名(如*.pdf)以及用户键入不带此扩展名的名称时,保存的文件也没有此扩展名。 示例代码: QFileDialog fileDialog(this, "Choose file to save"); fileDialog.setNameFilter("PDF-Files (*.pdf)"); fileDialog.exec(); QFile pdfFile(fileDialog.selectedFiles().first()); 现在,当用户输入“f

当使用
QFileDialog
保存文件并指定扩展名(如*.pdf)以及用户键入不带此扩展名的名称时,保存的文件也没有此扩展名。
示例代码:

QFileDialog fileDialog(this, "Choose file to save");
fileDialog.setNameFilter("PDF-Files (*.pdf)");
fileDialog.exec();
QFile pdfFile(fileDialog.selectedFiles().first());
现在,当用户输入“foo”作为名称时,文件将保存为“foo”,而不是“foo.pdf”。因此,
QFileDialog
不会自动添加扩展名。我的问题:如何更改此设置?

您可以使用:

如果未指定其他后缀,则此属性保留添加到文件名的后缀

此属性指定一个字符串,如果该字符串没有后缀,则该字符串将添加到文件名中。后缀通常用于表示文件类型(例如,“txt”表示文本文件)


Qt文档清晰而全面,我想知道你怎么可能错过QFileDialog::setDefaultSuffix()看起来像是做了很多工作,就像:QFileDialog::getSaveFileName()一样。我错过了什么吗?@Julien L:我通常试着回答问题,而不是问需要,尤其是像这样的简单问题。但是,如果OP打开我链接的页面并搜索“扩展名”,他只会找到“setNameFilter”的示例,而没有其他与默认后缀相关的内容。@cjhuitt:没错,这就是我问这个问题的原因(很容易回答)当允许使用多个文件类型时,如何做到这一点?e、 g,“所有文件(.pdf*.txt);;pdf文件(.pdf)”并且用户选择了第二个条目,pdf Files?@manatttta虽然不是很简单,但应该可以子类化
QFileDialog
,将
filterSelected()
信号连接到一个插槽,该插槽搜索过滤器字符串中的第一个文件扩展名,然后用它调用
setDefaultSuffix()