14

当使用 aQFileDialog保存文件并指定扩展名(如 *.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不会自动添加扩展名。我的问题:我怎样才能改变这个?

4

2 回答 2

19

您可以使用QFileDialog::setDefaultSuffix()

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

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

于 2009-12-23T16:21:21.370 回答
0

对于多个文件过滤器,可以执行以下操作。

import re
import os

def saveFile(self):
    path, fileFilter = QFileDialog().getSaveFileName(self, "Save file", 
        "", "Gnuplot Files (*.plt)" 
        + ";;" + "Gnuplot Files (*.gp)"
        + ";;" + "Gnuplot Files (*.gpt)"
        + ";;" + "Text Files (*.txt)")

    selectedExt = re.search('\((.+?)\)',fileFilter).group(1).replace('*','')

    # Attach extension as per selected filter, 
    # if file does not have extension.
    if not os.path.splitext(path)[1]:
        path = path + selectedExt

    print(path)
于 2021-11-23T17:34:46.743 回答