C++之QT文本处理QDir、QFileDialog、QStringList、QFile

一、相应的头文件

复制代码
#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";
相关推荐
lingran__4 分钟前
Git 完全指南(三):远程仓库与标签管理
开发语言·git·gitee·ssh·团队协作·远程仓库·分布式版本控制
for_ever_love__6 分钟前
python爬虫: 数据解析
开发语言·爬虫·python·xpath
学习星球15 分钟前
AI 一句话生成 3D 游戏世界:腾讯 HY-World 2.0 开源深度解析与本地实战
开发语言·人工智能·游戏·3d·ai·课程设计·ai编程
名字还没想好☜17 分钟前
Go 用 -race 抓数据竞争:一个偶发崩溃的排查、原理与修复
开发语言·后端·golang·go
励志不掉头发的内向程序员18 分钟前
LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之鼠标事件与RS_ActionDrawLine
c++·qt·学习·架构·计算机外设
旖旎夜光22 分钟前
LeetCode 525:连续数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
fpcc27 分钟前
c++编程实践—如何理解生命周期
c++
小灰灰搞电子28 分钟前
Rust std::vec::Vec<T>动态数组:所有相关 API 全面介绍
开发语言·rust
学习星球31 分钟前
CodeWhale 深度剖析:从 DeepSeek-TUI 到 40.9K Star 的 Rust 终端编程 Agent
开发语言·后端·rust
曹牧1 小时前
C#:线程间操作无效,不是从创建控件线程访问
开发语言·c#