Qt基础开发之Qt文件操作类QFile读写文件的详细方法与实例及QDataStream的使用方法

Qt文件操作类QFile简介

Qt中使用QFile类来操作文件的输入/输出。继承至QIODevice,QIODevice类是输入/输出设备的基类,

为设备提供了公共实现和抽象接口用于读写块数据。QIODevice又继承至QObject。

1、使用QFile类打开文件

QFile的构造函数

QFile(const QString &name) //传入一个文件路径

构造完成后,并没有打开文件,需要使用QFile::open函数来打开文件

[virtual] bool QFile::open(OpenMode mode);
/*
*OpenMode mode 打开方式,是一个枚举类型
*QIODevice::NotOpen 不打开
*QIODevice::ReadOnly 只读方式
*QIODevice::WriteOnly 读写方式
*QIODevice::ReadWrite 读写方式
*QIODevice::Append   追加方式
*QIODevice::Truncate 阶段方式
*QIODevice::Text     转换不同平台的换行,读的时候把所有换行转成'\n',写的时候再把'\n'转换对应平台的换行
*QIODevice::Unbuffered 不使用缓冲区
*/

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadOnly);

2、QFile类关闭文件

[virtual] void QFileDevice::close(); //刷新缓冲区,并关闭文件

3、QFile类文件读操作

QIODevice::read函数

QByteArray QIODevice::read(qint64 maxSize);//读取maxSize个字节,内部位置指针后移maxSize,并返回一个QByteArray对象。

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadOnly);
qDebug() << file.read(10) << endl;
file.close();

QIODevice::readLine函数

QByteArray QIODevice::readLine(qint64 maxSize = 0) //读取一行,但是这一行不能超过maxSize字节,maxSize = 0代表不限制行字节数。

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadOnly);
qDebug() << file.readLine(10) << endl;
file.close();

QIODevice::readAll函数

QByteArray QIODevice::readAll()

4、QFile类文件写操作

QIODevice::write函数

qint64 QIODevice::write(const QByteArray &byteArray); //将byteArray写入文件,写完内部位置指针后移

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadWrite | QIODevice::Text); //打开模式可以使用‘|'组合
QByteArray byte("hellworld");
file.write(byte);
file.write(byte);
file.close();

5、QDataStream

流控文件输入输出可以使用QDataStream。

流控写入

#include <QDataStream>
#include <QDebug>
#include <QFile>
int main(int argc, char**argv)
{
    QFile file("d:/123.txt");
    file.open(QIODevice::ReadWrite);
    QDataStream stream(&file);
    int a = 10;
    QString str = "helloworld";
    stream << a << str;
    file.close();
    return 0;
}

流控读取

#include <QDataStream>
#include <QDebug>
#include <QFile>
int main(int argc, char**argv)
{
    QFile file("d:/123.txt");
    file.open(QIODevice::ReadWrite);
​
    QDataStream stream(&file);
    int a;
    QString str;
    stream >> a >> str;
    qDebug() << "a:" << a << "str:" << str << endl;
    file.close();
    return 0;
}

本文主要介绍了Qt文件操作类QFile读写文件的详细方法与实例及QDataStream的使用方法,更多关于Qt基础开发知识请查看下面的相关链接

(0)

相关推荐

  • Qt GUI图形图像开发之Qt表格控件QTableView简单使用方法及QTableView与QTableWidget区别

    QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件 QTableView类实现表格视图,QTableView的数据由继承QAbstractItemModel的子类models来提供 #include<QStandardItemModel> QStandardItemModel *model = new QStandardItemModel(); ui->tableView->setModel(model); 一.添加表头: model->setColumn

  • Qt图形图像开发之曲线图表模块QChart库坐标轴和数据不对应、密集的散点图无法显示问题解决方法

    QChart坐标轴和数据不对应问题描述: lineseries->append(4, 10); lineseries->append(5, 8); Chart->addSeries(lineseries); // 将 series 添加至图表中 axisX->setRange(0, 15);//设置X的显示范围 axisY->setRange(-20, 20); lineChart->setAxisX(axisX);//把轴添加到图表中 lineChart->se

  • Qt GUI图形图像开发之QT表格控件QTableView详细使用方法与实例

    QT表格控件QTableView简介 ​ 表格视图控件QTableView,需要和QStandardItemModel, 配套使用,这套框架是基于MVC设计模式设计的,M(Model)是QStandardItemModel数据模型,不能单独显示出来.V(view)是指QTableView视图,要来显示数据模型,C(controllor)控制在Qt中被弱化,与View合并到一起. QTableView简单使用实例 ​ QStandardItmeModel表格的数据模型,那么这个模型需要填上每一行每

  • Qt GUI图形图像开发之QT表格控件QTableView,QTableWidget复杂表头(多行表头) 及冻结、固定特定的行的详细方法与实例

    我们在开发过程中对于表格使用频率还是挺高的,使用QT框架开发时候我们使用QTableView或者QTableWidget创建表格. 其中表格分为 表格头与表格体: 对于简单地表格,我们可以设置表头来满足我们的要求(当然也可以隐藏表头),不过对于定制化的表头,我们能做的不是特别多.特别是对于复杂的表头,使用自带的表头,无论怎么设置都不太可能达到需求.例如我最近接到的一个项目,需求是: 我们分析一下这个表格有什么特点: 1.表头不是简单的一行,而是两行. 2.表头有单元格的合并. 3.部分表头中间有

  • Qt串口通信开发之QSerialPort模块简单使用方法与实例

    我这里主要是对串口类的简单使用,实现的功能是以读写方式打开串口,点击发送数据按钮将发送区的数据发送到缓冲区,然后在接收区显示出来,界面如下:(源码可以在这里下载) 这里使用了QSerialPort模块提供的两个类:QSerialPort类和QSerialPortInfo类,QSerialPort类提供了对串口的操作,QSerialPortInfo类提供了对串口信息的获取.下面是主要代码,包含了对串口类的简单使用. 首先,一定要在.pro文件中添加:QT += serialport 串口初始化如下

  • Qt图形图像开发之曲线图表模块QChart库读取/设置X轴的显示区间

    设置初始的显示的区间,常用的有两种方法 (1)自动 lineseries = new QLineSeries();//声明折线数据集 lineseries->append(4, 10); //填充数据集 *lineseries << QPointF(13, 5) << QPointF(17, 6); lineChart = new QChart();//创建图表 lineChart->addSeries(lineseries); // 将 数据集 添加至图表中 line

  • Qt串口通信开发之QSerialPort模块Qt串口通信接收数据不完整的解决方法

    在使用串口接收数据时,当数据量大的时候会出现数据接收不完整的情况. 因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即发送,并不保证一定是当前所发数据的起始部分. 因此串口通信双方在通信前应制定好通信协议,规定好数据的起始和结束标志,串口当读到完整的起始和结束标志之后,才认定读完一条完整的数据. 本例中用串口定时发送当前时间,用"#"表示数据的结尾,定时时间为0毫秒,即能发多快就发多快. 发送 void Widg

  • Qt图形图像开发曲线图表模块QChart库缩放/平移详细方法与实例

    1.使用QChartView来缩放 (1)用鼠标框选一个矩形,把图放大到这个矩形 QChartView::setRubberBand(QChartView::RectangleRubberBand);//XY方向同时放大到鼠标画出的矩形大小(也可以设置为只放大X轴或Y轴) (2)setRubberBand函数同时也能使鼠标右键,具备缩小图的功能. 2.使用Qchart来平移和缩放 QChart::scroll(-10, 5);//整体平移(-10, 5),两个参数分别为Δx和Δy QChart:

  • Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例

    首先要了解QChartView.QChart.QLineSeries.QValueAxis的实体之间的关系,例如一个QChartView中可以包含几个QValueAxis?这些可参考 Qt图形图像开发曲线图表模块QChart库基本用法.各个类之间的关系说明 每个chart可以包含多个QLineSeries数据系列,每个QLineSeries数据系列又包含了2个QValueAxis数值轴或QDateTimeAxis时间轴. 那么这个chart中的多个数据系列,一起显示在同一个chart中,会是什么

  • Qt图形图像开发之QT滚动区控件(滚动条)QScrollArea的详细方法用法图解与实例

    QT滚动区控件(滚动条控件)QScrollArea简介 滚动区域控件QScrollArea用于显示一个画面中的子部件的内容.如果部件超过画面的大小,视图可以提供滚动条,这样就可以看到部件的整个区域. QScrollArea属于控件容器类,可以直接在ui中拖出来. 对于QScrollArea,最难搞懂的就是:如何控制它,才能让它在我们想要出现滚动条的时候出现滚动条. 我们拖入一个QScrollArea,再向他里面拖入4个button,观察信息如下: 可以发现,4个button并不是直接位于QScr

  • Qt串口通信开发之Qt串口通信模块QSerialPort开发完整实例(串口助手开发)

    之前自己写了用于上位机做基本收发的界面,独立出来相当于一个串口助手,先贴图: 功能作为串口助手来说还算完善,五个发送槽,一个接收槽,可以检测可用串口并加上相关标志,串口设置,记数功能,还有菜单栏上的文件操作和一些选择功能. 下面说一说这个项目: 做这个串口助手分为两步,第一步是设计界面,第二部是功能的代码实现. 一.界面设计 界面设计用Qt Designer,当然用Qt Creator的界面编辑器也可以,只不过感觉Qt Designer更好用一点,因为可以随时运行查看你的界面效果而不用编译整个项

  • Qt图形图像开发之Qt曲线图美化QChart QScatterSeries 空心点阵图,鼠标移动到上面显示数值,鼠标移开数值消失效果实例

    最近接到一个Qt QChart曲线图美化的需求,画一个折线图,关键点使用空心的圆点标识出来,鼠标移动到关键点上,显示出当前数值:鼠标移走数值消失. 效果图如下: 我们遇到这个需求的时候,第一时间就会想到使用 QLineSeries 画折线图. 首先初始化 QChart *chart = new QChart(); chart->legend()->setVisible(false); ui->chartView->setChart(chart); ui->chartView-

  • Qt串口通信开发之QSerialPort模块详细使用方法与实例

    Qt串口通信基础及名词说明 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据.它很简单并且能够实现远距离通信.比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米: 而对于串口而言,长度可达1200米.典型地,串口用于ASCII码字符的传输.通信使用3根线完成,分别是地线.发送.接收.由于串口通信

  • Qt图形图像开发曲线图表模块QChart库基本用法、各个类之间的关系说明

    如何编译安装QChart请查看下面文章 Qt图形图像开发之曲线图表库QtChart编译安装详细方法与使用实例 使用Qt曲线图表模块Chart库首先要注意3点: (1)在.pro文件中添加:QT += charts. (2)用到QChart的文件中添加:QT_CHARTS_USE_NAMESPACE,或者:using namespace QtCharts; 在ui界面中拖入一个graphicsView控件,然后右击提升为QChartView类,写提升为的类:QtCharts::QChartView

随机推荐