14

を使用しQFileDialogてファイルを保存し、拡張子 (*.pdf など) を指定し、ユーザーがこの拡張子のない名前を入力すると、保存されたファイルにもこの拡張子はありません。
サンプルコード:

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

ユーザーが名前として「foo」と入力すると、ファイルは「foo.pdf」ではなく「foo」として保存されます。したがって、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 に答える