Qt6学习笔记十四(文件读写、文件信息读取)

简介: Qt6学习笔记十四(文件读写、文件信息读取)

一、QFile文件读写操作

需求:选择文件然后lineEdit显示路径,TextEdit显示内容

布局:

一个lineEdit和PushButton放到一个widget中水平对齐

然后下面放置一个Text Edit进行整体垂直对齐

在widget.cpp中

#include "widget.h"
#include "./ui_widget.h"
#include<QFileDialog>
#include<QFile>
#include<QTextCodec>//要在cmakelist中添加相应的内容
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //点击选取按钮,弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        QString path = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\xuheding\\Desktop");
        //将路径放到lineEdit中
        ui->lineEdit->setText(path);
//        //编码格式类
//        QTextCodec *codec=QTextCodec::codecForName("gbk");//对于gbk编码,后续array转为utf-8。codec->toUnicode(array)
        //读取内容  放入到textEdit中
        //QFile默认支持的格式是utf-8
        QFile file(path);//参数就是读取文件的路径
        //设置打开方式(只读)
        file.open(QIODeviceBase::ReadOnly);
        QByteArray array = file.readAll();
        //将读取的数据  放入到textEdit中
        ui->textEdit->setText(array);
    //对文件对象进行关闭
        file.close();
    });
}
Widget::~Widget()
{
    delete ui;
}

另外,文件还可以按行读取

//QByteArray array = file.readAll();
QByteArray array;
while(!file.atEnd()){
     array+=file.readLine();//按行读
}

写入

//进行写文件
file.open(QIODevice::Append);//用追加的方式写
file.write("啊啊啊啊啊");
file.close();

注意:QT6中CMake使用QTextCodec

由于QTextCodec在qt6中已经被移除

1.先保证qt5 compat安装完成

参考链接:QT6中QTextCodec找不到

2.

打开帮助文档,找到QTextCodec

在CMakeLists 中要输入一下

find_package(Qt6 COMPONENTS Core5Compat REQUIRED) 
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)

注意mytarget要修改为自己的工程名

分别放到2个部分即可。

总结

二、QFileInfo文件信息读取

可以查看文件修改日期,后缀,大小…等内容.

//QFileInfo
QFileInfo info(path);//对之前的path进行读取
qDebug()<<"file size"<<info.size();//文件大小
qDebug()<<"suffix"<<info.suffix();//文件后缀
qDebug()<<"file name"<<info.fileName();//文件名
qDebug()<<"file path"<<info.filePath();//文件路径
qDebug()<<"create date"<<info.birthTime().toString("yyyy/MM/dd hh:mm:ss");//文件的创建日期.(toString使用可以查看文档)
qDebug()<<"modified date"<<info.lastModified().toString("yyyy/MM/dd hh:mm:ss");//文件最后修改日期


相关文章
|
3月前
【qt】如何读取文件并拆分信息?
【qt】如何读取文件并拆分信息?
33 0
|
3月前
|
网络协议
【qt】TCP客户端信息的接受和发送
【qt】TCP客户端信息的接受和发送
34 0
|
3月前
|
网络协议
【qt】TCP 服务端怎么收到信息?
【qt】TCP 服务端怎么收到信息?
38 0
|
3月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
|
3月前
QT 软件打包为一个单独可执行.exe文件流程
QT 软件打包为一个单独可执行.exe文件流程
700 0
|
3月前
|
安全 C++ Windows
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
|
3月前
|
数据安全/隐私保护
【qt】获取主机信息系统
【qt】获取主机信息系统
17 0
|
3月前
|
容器
【qt】如何获取网卡的信息?
【qt】如何获取网卡的信息?
46 0
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
180 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
88 0