QFileDialog
类是 Qt 框架中用于处理文件对话框的一个类,它继承自 QDialog
。QFileDialog
提供了标准的文件选择对话框,使用户能够选择文件或目录。这个类可以用于打开或保存文件,也可以用来选择目录。
主要功能
- 打开和保存文件:
QFileDialog
提供了调用标准打开文件对话框和保存文件对话框的方法,使用户可以浏览文件系统,并且选择需要打开或保存的文件。 - 目录选择:除了文件选择,
QFileDialog
还能够用于选择文件夹,对于需要用户指定工作目录等场景非常有用。 - 过滤器:可以设置文件类型过滤器,仅显示对话框中符合特定模式的文件或目录,提高了用户体验。
- 视图模式:支持不同的文件视图模式和排序方式,用户可以根据需要调整。
主要方法
getOpenFileName()
、getOpenFileNames()
:弹出对话框让用户选择一个或多个要打开的文件。getSaveFileName()
:弹出对话框让用户选择要保存文件的路径和文件名。getExistingDirectory()
:弹出对话框让用户选择一个目录。setNameFilter()
:设置对话框显示的文件过滤器,例如仅显示特定扩展名的文件。setViewMode()
:设置在对话框中文件的显示方式,如列表或详细列表。
示例代码
#include <QFileDialog>
#include <QDebug>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 打开文件对话框选择一个文件QString fileName = QFileDialog::getOpenFileName(nullptr, "Open Image", "/home/user", "Image Files (*.png *.jpg *.bmp)");qDebug() << "Selected file:" << fileName;// 打开对话框选择一个保存文件的位置QString saveFileName = QFileDialog::getSaveFileName(nullptr, "Save File", "/home/user","Text Files (*.txt)");qDebug() << "Save file path:" << saveFileName;return app.exec();
}
这个示例演示了如何使用 QFileDialog
弹出打开文件和保存文件的对话框,以及如何应用文件类型过滤器。
示例代码myself
//简单粗暴用getOpenFileName操作文件选择对话框
void Widget::on_btnFileDialog_clicked()
{//选择需要打开的文件和文件的类型。弹出一个框(单个)QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),"D:/c++QT/lessonDemo/noteBookProject",tr("Text files (*.txt *.doc)"));qDebug() <<fileName;//打开文本文件QFile file(fileName);if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug()<<"open error";}//读取QTextStream in(&file);in.setCodec("UTF-8");//QString context = in.read(file.size());方法一:按照大小整个读//方法二:如果没到尾部,一行一行的读。while(!in.atEnd()){QString context = in.readLine();qDebug() << context;qDebug() << "=============";//std::cout <<"=========="<<std::endl;}//关闭file.close();
}//分步骤操作文件选择对话框
void Widget::on_btnFDStep_clicked()
{QFileDialog dialog;//打开已经存在的所有文件dialog.setFileMode(QFileDialog::ExistingFiles);dialog.setNameFilter("*.txt");dialog.exec();//选择多个文件,遍历出来(数组)QStringList qstrings = dialog.selectedFiles();for(QString str : qstrings){qDebug() << str;}
}//另存为文件。和写入文件一个逻辑
void Widget::on_btnSave_clicked()
{QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"D:/c++QT/lessonDemo/noteBookProject/untitled.txt",tr("Text (*.txt)"));qDebug()<< fileName;//写入文件QFile file(fileName);if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug()<<"open error";}QTextStream out(&file);out.setCodec("UTF-8");out << "QDialog Write" ;file.close();
}
打开单个文件
打开多个文件,数组遍历
另存为文件
结论
QFileDialog
是 Qt 中一个非常方便的工具,它使得与用户互动选择文件或目录的任务变得既标准化又简单。通过预定义的静态方法可以快速弹出对话框,并根据用户选择返回所需的文件路径或者目录,极大地简化了文件选择相关的编码工作。