文章目录
一、文件读写操作QFile
- 一、文件读写操作QFile
- 1.1 头文件
- 1.2 内部函数
- 二、UI设计
- 三、代码
- 3.1 mainwindow.h
- 3.2 mainwindow.c
- 四、效果
QT自带了一个文件操作的类->QFile
,实验中也是着重 QFile
的操作
#include
这些函数没必要都去记住,我们只需要记住简单的例如open()
、readLine()
、atEnd()
、close()
等常用的函数即可
- 首先我们
new
一个QFile
对象的时候有四种构造方法,通常来说我们传入 文件的路径名 就好了 - 然后我们要调用
open()
函数,这个函数是告诉操作系统我们通过什么样的方式打开,例如只读打开、只写打开、可读可写打开……,这个和我们在C语言中的文件打开函数是类似的,我们在QIODevice
看到一个枚举类型的OpenModeFlag
打开方式
enum OpenModeFlag {
NotOpen = 0x0000,
ReadOnly = 0x0001,
WriteOnly = 0x0002,
ReadWrite = ReadOnly | WriteOnly,
Append = 0x0004,
Truncate = 0x0008,
Text = 0x0010,
Unbuffered = 0x0020,
NewOnly = 0x0040,
ExistingOnly = 0x0080
};
这些就是文件打开的一些模式了,可以根据自己的需求选用,我们这里既然是文件的读取显示操作,那么只需要读取,于是我们的打开方式就是:QIODevice::ReadOnly
- 然后就是对这个文件从头到尾读取,在以前我们学的C语言中有一个文件结束标志
EOF
,一般这个EOF
是 − 1 -1 −1 但是这里的QFile
提供了一个函数atEnd()
如果当我们读到了文件末尾,那么就会返回一个true
例如:
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd()) {
QByteArray line = file.readLine();
process_line(line);
}
- 最后我们通过
file.close()
关闭数据流就好了
这里随便画画就好了,不过可以在文本显示框插入背景图,只需要在组件的styleSheet
中添加资源即可
mainwindow.ui
MainWindow
0
0
300
500
MainWindow
false
true
文件路径
打开文件
文本内容:
background-image: url(:/a/tmp/back.png);
background-color: rgba(0, 0, 0, 12);
0
0
300
23
三、代码
3.1 mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
3.2 mainwindow.c
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
#include
#include
#include
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//使用connec函数,熟悉匿名表达式
connect(ui->pushButton,&QPushButton::clicked,[=](){
//点击按钮,弹出文件选择对话框
//使用对话框,获取打开路径,注意参数一是父类对象 ,参数二是对话窗口名称 参数三是默认打开路径
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open File"), "C:\\data");
//使路径显示到路径 line edit地方
ui->label->setText(fileName);
//调试的跟踪打印
qDebug()setText(array);
//关闭文件数据流
file.close();
//编码格式类
//QTextCodec * codec = QTextCodec::codecForName("gbk");
QFileInfo info(fileName);
qDebug()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?