QT文件基本操作

news/2024/11/25 6:26:45/

QT文件基本操作

1.概述

这篇文章介绍一些QT操作文件的基础内容

2.创建项目

首先创建一个普通的widget类型项目,然后使用UI 布局页面,实现一个读取文件内容的功能。

2.1.UI布局

在UI界面添加一个QWideget容器,然后在容器中分别添加lineTextpushButton控件。设置QWideget容器水平对齐.

QWideget容器下面添加textEdit控件。
在这里插入图片描述

3.读取文件内容

3.1.读取文件内容

widget.cpp文件中创建一个槽函数和信号,实现点击按钮选择文件,在lineText控件中显示文件路径,textEdit界面显示文件内容.

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QFileDialog>
#include <QFile>
#include <QTextCodec>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{
//    创建按钮的槽和信号,实现点击按钮选择文件,在界面显示文件内容ui->setupUi(this);connect(ui->pushButton, &QPushButton::clicked,[=](){
//        使用文件对话框,选择文件QString path = QFileDialog::getOpenFileName(this,"打开文件","/Users/bruce/Documents/WorkSpace/QtSpace/05_Qfile");//        设置单行文本框显示文件路径ui->lineEdit->setText(path);//        创建文件对象QFile file(path);//        设置操作文件方式file.open(QIODevice::ReadOnly);//        读取文件内容,QFile默认支持文件格式是UTF-8QByteArray text = file.readAll();
//        默认utf-8格式在textEdit文本编辑框中显示文件的内容
//        ui->textEdit->setText(text);//        设置格式QTextCodec * codec = QTextCodec::codecForName("gbk");
//        用设置的gbk格式在textEdit文本编辑框中显示文件的内容ui->textEdit->setText(codec->toUnicode(text));
//        关闭文件资源file.close();});
}Widget::~Widget()
{delete ui;
}

实现效果图
在这里插入图片描述

3.2.按行读取

		QByteArray lineText;
//        读取文件不是结尾一直读取文件内容while(!file.atEnd()){
//            按行读取,返回类型是QByteArraylineText += file.readLine();}ui->textEdit->setText(lineText);
//        关闭文件资源file.close();

4.向文件写内容

//        追加内容方式打开文件file.open(QIODevice::Append);
//       向文件写入信息file.write("追加新信息");file.close();

5.获取文件属性

获取文件属性使用QFileInfo类,该类提供了获取文件属性的所有方法,查看帮助文档即可获取需要的属性

下面通过一个实例,展示部分文件属性。

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QFileDialog>
#include <QFile>
#include <QTextCodec>
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>//        获取文件属性QFileInfo fileInfo(path);qDebug() << "大小" << fileInfo.size() << "后缀名" << fileInfo.suffix() <<"名称" << fileInfo.fileName() << "路径" << fileInfo.path();//        默认格式输出日期qDebug() << "默认格式输出创建日期" << fileInfo.created();qDebug() <<"设置日期格式" << fileInfo.created().toString("yyyy/MM//dd hh:mm:ss");//        新版本QT中这个方法过时了created, 现在用birthTime方法qDebug() << fileInfo.birthTime();qDebug() << fileInfo.birthTime().toString("yyyy/MM//dd hh:mm:ss");

http://www.ppmy.cn/news/1549747.html

相关文章

AWS codebuild + jenkins + github 实践CI/CD

前文 本文使用 Jenkins 结合 CodeBuild, CodeDeploy 实现 Serverless 的 CI/CD 工作流&#xff0c;用于自动化发布已经部署 lambda 函数。 在 AWS 海外区&#xff0c;CI/CD 工作流可以用 codepipeline 这项产品来方便的实现&#xff0c; CICD 基本概念 持续集成( Continuous…

CTF之密码学(键盘加密)

在CTF&#xff08;Capture The Flag&#xff0c;夺旗赛&#xff09;中&#xff0c;键盘加密是一种独特而有趣的加密方式&#xff0c;它巧妙地利用了键盘的布局和坐标进行信息的加密和解密。以下是关于CTF中键盘加密的详细解释&#xff1a; 一、键盘加密的定义 键盘加密是通过…

【网络安全设备系列】4、漏洞扫描设备

0x00 定义&#xff1a; 漏洞扫描是指基于漏洞数据库&#xff0c;通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测&#xff0c;发现可利用的漏洞的一种安全检测&#xff08;渗透攻击&#xff09;行为。 0x01 主要功能&#xff1a; 可以对网站、系统、数据…

Unity图形学之法线贴图原理

1.正常贴图&#xff1a;RGBA 4通道 每个通道取值范围 0-255 贴图里面取值是 0-1 2.法线贴图&#xff1a;法线怎么存入正常贴图的过程 每个通道里面存储的是一个向量(x,y,z,w) 通常我们会对应xyzw为rgba 存储值的范围也是0-1向量的取值范围是 -1到1法线怎么存入正常贴图的过程&…

TCP/IP--黑客想要通过TCP攻击,会如何攻击,应该怎么应对。

黑客想要通过TCP攻击&#xff0c;会如何攻击&#xff0c;应该怎么应对。 SYN Flood 攻击时DDOS攻击一种&#xff0c;洪水泛滥。黑客发送大量的SYN请求到目标服务器&#xff0c;但是不完成三次握手和四次挥手的过程&#xff0c;不发送ACK响应&#xff0c;服务器收到SYN请求后&a…

《探索 C++:一门强大且多功能的编程语言》

《探索 C&#xff1a;一门强大且多功能的编程语言》 在编程的广阔世界里&#xff0c;C 无疑是一颗璀璨的明星&#xff0c;它以其高性能、丰富的特性和广泛的应用领域&#xff0c;吸引着无数开发者投身其中。今天&#xff0c;就让我们一同深入探索一下这门令人着迷的编程语言吧。…

设计模式-创建型-抽象工厂模式

1.概念 工厂方法模式只能生产一个产品系列&#xff0c;抽象工厂可以生产多个产品系列 2.作用 多个具体产品组成一个产品族&#xff08;产品系列&#xff09;&#xff0c;一个具体工厂负责生产一个产品族 3.应用场景 系统所需产品间由依赖关系&#xff0c;可以划分为同一产…

PostgreSQL中的内存上下文管理

在数据库的世界里&#xff0c;内存管理是性能优化的关键。PostgreSQL&#xff0c;作为一个高级的开源对象关系数据库系统&#xff0c;拥有一套精细的内存上下文管理系统&#xff0c;它不仅提高了数据库的性能&#xff0c;还增强了系统的稳定性。本文将深入探讨PostgreSQL中的内…