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

Ber*_*chi 11 c++ qt qt4 save qfiledialog

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

QFileDialog fileDialog(this, "Choose file to save");
fileDialog.setNameFilter("PDF-Files (*.pdf)");
fileDialog.exec();
QFile pdfFile(fileDialog.selectedFiles().first());
Run Code Online (Sandbox Code Playgroud)

现在当用户输入"foo"作为名称时,文件将保存为"foo",而不是"foo.pdf".所以QFileDialog不会自动添加扩展名.我的问题:我怎么能改变这个?

Cal*_*itt 17

你可以使用QFileDialog :: setDefaultSuffix():

如果未指定其他后缀,则此属性将后缀添加到文件名中.

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

  • 如果允许多种文件类型,怎么办呢?例如,"All-Files(*.pdf*.txt);; PDF-Files(*.pdf)"并且用户选择了第二个条目PDF-Files? (5认同)
  • @manatttta 虽然不完全是微不足道的,但应该可以将`QFileDialog` 子类化,将`filterSelected()` 信号连接到一个插槽,该插槽在过滤器字符串中搜索第一个文件扩展名,然后用它调用`setDefaultSuffix()`。 (2认同)