一、相应的头文件
#include <QFileDialog>
#include <QDir>
#include <QStringList>
二、简介
1.QFileDialog
实际效果如下:比如需要选择打开的文件夹或者文件名,通过调用资源管理器的方式进行可视化操作。
代码示例为:
cpp
QString directory = QFileDialog::getExistingDirectory(nullptr,
"选择一个文件夹",
"/", // 初始目录,这里使用根目录,你可以更改为其他目录
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
if(!directory.isEmpty())
{
QMessageBox::information(nullptr, "选择的文件夹", "你选择了:" + directory);
ui->lineEdit_11->setText(directory);
}
else
{
QMessageBox::information(nullptr, "取消", "你没有选择任何文件夹。");
ui->lineEdit_11->setText("");
}
2.QDir
使用场景,一般为需要获取或筛选一个文件夹下的文件类型,比如我需要找到该文件夹下所有的文件夹名称,或者找到所有的非文件夹信息等。
cpp
QDir dir(directoryPath);
// 获取目录中的文件和子目录名列表
QStringList entries = dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
// 遍历列表并打印内容
foreach (const QString &entry, entries) {
QFileInfo fileInfo(dir, entry);
qDebug() << "Name: " << fileInfo.fileName(); //名称
qDebug() << "Path: " << fileInfo.absoluteFilePath(); //文件绝对路径
qDebug() << "Is directory: " << fileInfo.isDir(); //是否为文件夹
qDebug() << "Is file: " << fileInfo.isFile(); //是否为文件
qDebug() << "----------";
}
获取绝对路径
cpp
QString fileName = "file.txt"; // 文件名或相对路径
QDir dir; // 默认是当前工作目录
QString absolutePath = dir.absoluteFilePath(fileName);
QFile file(absolutePath);
// ... 现在你可以使用 file 对象了 ...
3.QStringList
cpp
QStringList outerrordata;
//通过C++流数据打印的方式可以直接将其获得为队列
outerrordata<<A<<B<<C<<D<<E;
//outerrordata:[A,B,C,D,E]
4.QFile
在 Qt 框架中,QFile
类提供了与平台无关的文件 I/O 功能。它允许你以不同的模式(如只读、只写、读写等)打开文件,并提供了读写文件的各种方法。
cpp
//1.打开文件
QFile file("path/to/your/file.txt");
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) {
// 错误处理:无法打开文件
qDebug() << "Error opening file:" << file.errorString();
}
//2-1.写入文件
QTextStream out(&file);
out << "Hello, World!" << endl;
// 记得在完成后关闭文件
file.close();
//2-2.读取文件
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
// 处理每一行数据
qDebug() << line;
}
file.close();
}
//示例:操作csv表格文件
QFile filecsv("output.csv");//创建CSV文件
if (!filecsv.open(QIODevice::WriteOnly | QIODevice::Text)) //创建CSV文件
{
QMessageBox::information(nullptr,"dui", "文件打开失败");
}
else
{
QMessageBox::information(nullptr,"dui", "文件打开成功");
}
QStringList outerrordata;
//通过C++流数据打印的方式可以直接将其获得为队列
outerrordata<<A<<B<<C<<D<<E;
//outerrordata:[A,B,C,D,E]
QTextStream out(&filecsv);//创建流数据写入filecsv中
out << outerrordata.join(",") << "\n";