QT—文件选择对话框 QFileDialog
QFileDialog开发流程
使用 QFileDialog 的基本步骤通常如下:
实例化:首先,创建一个 QFileDialog 对象的实例。
QFileDialog dialog;
设置模式:根据需要设置对话框的模式,如打开文件、保存文件等。
dialog.setFileMode(QFileDialog::AnyFile);
设置过滤器:如果需要,可以设置文件类型过滤器,以限制用户可以选择的文件类型。
dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XMLfiles (*.xml)"));
显示对话框:通过调用 exec() 方法显示对话框,并在用户作出选择后执行相应的操作。
if (dialog.exec()) {
QStringList files = dialog.selectedFiles();
// 对用户选定的文件进行操作
}
通过 selectedFiles 方法获取用户选择的文件路径列表,然后对这些文件进行相应的处理。
这是使用 QFileDialog 的基本模式。Qt 也允许使用静态方法直接创建和显示对话框,例如QFileDialog::getOpenFileName() ,这些方法更简单,但提供的自定义选项较少。
QFileDialog 打开开发案例
#include <QApplication>
#include <QFileDialog>
#include <QStringList>
#include <QString>
#include <QMessageBox>
/*
fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "",
tr("Text Files (*.txt);;All Files
(*)"));
*/
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建一个 QFileDialog 实例
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) {
// 此处可以添加对 fileName 的处理代码
QMessageBox::information(nullptr, "File Selected", fileName);
}
}
return app.exec();
}
void Widget::on_btnse_clicked()
{
QFileDialog qFileDialog;
qFileDialog.setFileMode(QFileDialog::ExistingFiles);
qFileDialog.setNameFilter("*.txt");
qFileDialog.exec();
QStringList qstrings=qFileDialog.selectedFiles();
for(QString str : qstrings)
{
qDebug()<<str;
}
}
QFileDialog 保存开发案例
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();
}
void Widget::on_btnSave_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"F:/Qt/untitled.txt",
tr("Text (*.txt *.doc)"));
qDebug()<<fileName;
QFile file(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();
}