3.4
文件选择对话框
QFileDialog
3.4.1 QFileDialog
开发流程
使用
QFileDialog
的基本步骤通常如下:
实例化
:首先,创建一个
QFileDialog
对象的实例。
QFileDialog qFileDialog;
设置模式
:根据需要设置对话框的模式,如打开文件、保存文件等。
qFileDialog.setFileMode(QFileDialog::ExistingFiles);
设置过滤器
:如果需要,可以设置文件类型过滤器,以限制用户可以选择的文件类型。
qFileDialog.setNameFilter("Text files (*.txt *.doc )");
显示对话框
:通过调用
exec()
方法显示对话框,并在用户作出选择后执行相应的操作。
if(qFileDialog.exec())
{
// 获取用户选中的文件列表
QStringList fileName = qFileDialog.selectedFiles(); //显示打开的文件名及文件地址
// 遍历列表并处理每个文件
for(QString str : fileName)
{
qDebug() << str;
}
}
通过
selectedFiles
方法获取用户选择的文件路径列表,然后对这些文件进行相应的处理。
这是使用
QFileDialog
的基本模式。
Qt
也允许使用静态方法直接创建和显示对话框,例如
QFileDialog::getOpenFileName()
,这些方法更简单,但提供的自定义选项较少。
3.4.2 QFileDialog
打开开发案例
#include "widget.h" #include "ui_widget.h"
#include <QFileDialog>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
/* 打开文件 */
void Widget::on_btnOpenselect_clicked()
{
/*QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "D:/Embedded_learning/03.QT_Codeinlesson/build-P3_4_QFile_OpenDesktop_Qt_5_12_9_MinGW_64_bit-Debug", tr("Text files (*.txt *.doc )")); //*文件打开*/
// 创建一个 QFileDialog 实例
QFileDialog qFileDialog;
// 设置对话框为打开文件模式
qFileDialog.setFileMode(QFileDialog::ExistingFiles); //可以多文件打开
// 设置文件过滤器
qFileDialog.setNameFilter("Text files (*.txt *.doc )"); //文件选择框的文件形式
// 显示对话框
if(qFileDialog.exec())
{
// 获取用户选中的文件列表
QStringList fileName = qFileDialog.selectedFiles(); //显示打开的文件名及文件地址
// 遍历列表并处理每个文件
for(QString str : fileName)
{
qDebug() << str;
// 1.打开文件
QFile file;
file.setFileName(str);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << "file open error";
}
// 2.读取文件
QTextStream in(&file); /* 多态,将子类进行联系 */
in.setCodec("UTF-8");
//QString context = in.read(file.size());
while(!file.atEnd())
{
QString context = in.readLine();
qDebug() << context;
}
// 3.输出文件及关闭
file.close();
}
}
}
3.4.3 QFileDialog
保存开发案例
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
/* 保存文件 */
void Widget::on_btnDialogSave_clicked()
{
/*保存文件名,文件格式,文件地址*/
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"D:/Embedded_learning/03.QT_Codeinlesson/build
P3_4_QFile_Open-Desktop_Qt_5_12_9_MinGW_64_bit-Debug",
tr("Text files (*.txt *.doc )"));
qDebug() << fileName;
/*写入文件内容*/
// 1.打开
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug() << "file open error";
}
// 2.写入
QTextStream out(&file);
out.setCodec("UTF-8");
out << "Write Dialog From The File";
// 3.关闭
file.close();
}



















