QFileDialog是一个用于在应用程序中选择文件或目录的Qt控件基类。以下是QFileDialog类的一些常用API及其说明:
一、构造函数
QFileDialog(QWidget *parent = nullptr, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString())
构造一个新的文件选择对话框,父窗口为parent,标题为caption,初始目录为directory,过滤器为filter。
二、基本属性
- setDirectory(const QString &directory):设置文件选择对话框的初始目录
- setNameFilter(const QString &filter):设置文件选择对话框的过滤器
- setFileMode(QFileDialog::FileMode mode):设置文件选择对话框的文件选择模式
- setViewMode(QFileDialog::ViewMode mode):设置文件选择对话框的显示模式
- setOptions(QFileDialog::Options options):设置文件选择对话框的选项
三、基本方法
- getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options()):显示打开文件对话框,并返回所选文件的路径。
- getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options()):显示打开多个文件对话框,并返回所选文件的路径列表。
- getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options()):显示保存文件对话框,并返回所选文件的路径。
以下是一个简单的示例,演示了如何使用QFileDialog来创建一个简单的文件选择对话框:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QFileDialog, QVBoxLayout
class FileDialogDemo(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("File Dialog Demo")
self.label = QLabel("No file selected.")
self.button = QPushButton("Select File")
self.button.clicked.connect(self.showFileDialog)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button)
self.setLayout(layout)
def showFileDialog(self):
filename, _ = QFileDialog.getOpenFileName(self, "Open File", "", "All Files (*);;Text Files (*.txt)")
if filename:
self.label.setText("Selected file: {}".format(filename))
app = QApplication(sys.argv)
dialog = FileDialogDemo()
dialog.show()
sys.exit(app.exec_())
在这个示例中,我们创建了一个名为FileDialogDemo的自定义窗口类,它包含一个标签和一个按钮。当点击按钮时,会显示文件选择对话框,并将用户选择的文件路径应用于标签的文本。在showFileDialog方法中,我们调用QFileDialog.getOpenFileName方法来显示文件选择对话框,并指定过滤器以限制用户只能选择特定类型的文件。getOpenFileName方法返回一个元组,其中第一个元素是所选文件的路径,第二个元素是所选文件类型的过滤器。在示例中,我们将第二个元素忽略,并将所选文件的路径应用于标签的文本。
除了getOpenFileName方法之外,QFileDialog还提供了其他几种方法来显示文件选择对话框,例如getOpenFileNames和getSaveFileName。这些方法的参数和用法与getOpenFileName类似,只是它们分别返回所选文件的路径列表和保存文件的路径。例如,我们可以使用以下代码来创建一个保存文件对话框:
filename, _ = QFileDialog.getSaveFileName(self, "Save File", "", "Text Files (*.txt)")
if filename:
with open(filename, "w") as f:
f.write("Hello, world!")
在这个示例中,我们创建了一个保存文件对话框,并在用户选择保存的文件后将一个简单的字符串写入该文件中。
这些仅仅是QFileDialog的基础知识,QFileDialog还有很多其他的API和选项,可以通过Qt文档进一步了解。