4 文件选择对话框 QFileDialog
4.1 QFileDialog 开发流程
方法一:分步骤打开
实例化 QFileDialog
创建 QFileDialog 实例:
cpp
QFileDialog dialog;
设置对话框模式
通过 setFileMode() 指定模式(如打开单个文件、多个文件或保存文件):
cpp
dialog.setFileMode(QFileDialog::AnyFile);
设置文件类型过滤器
使用 setNameFilter() 限制可选择的文件类型:
cpp
dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"));
显示对话框并获取结果
调用 exec() 显示对话框,通过 selectedFiles() 获取用户选择的路径列表:
cpp
if (dialog.exec()) {
QStringList files = dialog.selectedFiles();
// 处理选中的文件
}
方法二:静态方法简化操作
直接使用静态方法快速创建对话框(如 getOpenFileName()):
cpp
void Widget::on_btnQfiledialog_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"D:/AAA",
tr("Text(*.txt)"));
qDebug() << fileName;
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
qDebug() << "file open error";
}
QTextStream in(&file);
in.setCodec("UTF-8");
// QString context = in.read(file.size());
while(!in.atEnd()){
QString context = in.readLine();
qDebug() << context;
}
file.close();
}
代码块可直接插入项目中使用,静态方法需根据实际需求调整参数。
4.2 QFileDialog 打开开发案例
cpp
#include <QApplication>
#include <QFileDialog>
#include <QStringList>
#include <QString>
#include <QMessageBox>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QFileDialog dialog;
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setNameFilter("Text files (*.txt);;Images (*.png *.jpg);;All files (*)");
// 显示对话框
if (dialog.exec()) {
// 获取用户选中的文件列表
QStringList fileNames = dialog.selectedFiles();
// 遍历列表并处理每个文件
for (const QString &fileName : fileNames) {
QMessageBox::information(nullptr, "File Selected", fileName);
}
}
return app.exec();
}
功能特点
- 支持多文件选择
- 提供文件类型过滤器
- 显示选中文件的路径
- 基于Qt框架实现跨平台功能
4.3 QFileDialog 保存开发案例
cpp
void Widget::on_btnSave_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"D:/QT/untitled.txt",
tr("Text (*.txt *.doc)"));
qDebug()<<fileName;
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){
qDebug() << "file open error";
}
QTextStream out(&file);
out.setCodec("UTF-8");
out << "Qdialog Write Data to the Txt File";
file.close();
}
功能特点
- 通过文件对话框获取保存路径
- 以UTF-8编码写入文本内容
- 包含基本的错误处理