Qt文本流和数据流、缓冲操作和数据操作

1、文本流和数据流

A.Qt中讲文件类型分为2大类

1.文本文件–文件内容是可读的文本字符

2.数据文件–文件内容是直接的二进制数据

QFile直接支持文本文件和数据文件的读写

 

B.Qt提供了辅助类简化了文本文件/数据文件的读写

1.QTextStream–写入的数据全部转换为可读文本

2.QDataStream–写入的数据根据类型转换为二进制数据

IO设备辅助类的使用方式

 

不同的Qt版本的数据流文件格式可能不同

**void setVersion(int v)//设置的版本号

int version()const//获取读写版本号 **

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

代码示例

#include <QCoreApplication>
#include <QFile>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QFile file("C:/Users/59673/Desktop/test.hex");

    if( file.open(QIODevice::WriteOnly) )
    {
        QString dt = "mylovedandanxiaohai";
        double value = 3.14;

        file.write(dt.toStdString().c_str());
        file.write(reinterpret_cast<char*>(&value), sizeof(value));

        file.close();
    }

    if( file.open(QIODevice::ReadOnly) )
    {
        QString dt = "";
        double value = 0;

        dt = QString(file.read(19));
        file.read(reinterpret_cast<char*>(&value), sizeof(value));

        file.close();

        qDebug() << dt;
        qDebug() << value;
    }

    return a.exec();
}

运行结果

 

2、缓冲区操作与目录操作

A.Qt中缓冲区的概念

1.缓冲区的本质为一段连续的存储空间

2.QBuffer是Qt中缓冲区相关的类

3.在Qt中可以将缓冲区看作一种特殊的IO设备

4.文件流辅助类可以直接用于操作缓冲区

QBuffer缓冲区的使用方式

 

代码示例

#include <QtCore/QCoreApplication>
#include <QBuffer>
#include <QByteArray>
#include <QDataStream>
#include <QDebug>

void write_buffer(int type, QBuffer& buffer)
{
    if( buffer.open(QIODevice::WriteOnly) )
    {
        QDataStream out(&buffer);

        out << type;

        if( type == 0 )
        {
            out << QString("mylove");
            out << QString("3.1415");
        }
        else if( type == 1 )
        {
            out << 3;
            out << 1415;
        }
        else if( type == 2 )
        {
            out << 3.1415;
        }

        buffer.close();
    }
}

void read_buffer(QBuffer& buffer)
{
    if( buffer.open(QIODevice::ReadOnly) )
    {
        int type = -1;
        QDataStream in(&buffer);

        in >> type;

        if( type == 0 )
        {
            QString dt = "";
            QString pi = "";

            in >> dt;
            in >> pi;

            qDebug() << dt;
            qDebug() << pi;
        }
        else if( type == 1 )
        {
            int a = 0;
            int b = 0;

            in >> a;
            in >> b;

            qDebug() << a;
            qDebug() << b;
        }
        else if( type == 2 )
        {
            double pi = 0;

            in >> pi;

            qDebug() << pi;
        }

        buffer.close();
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QByteArray array;
    QBuffer buffer(&array);

    write_buffer(0, buffer);
    read_buffer(buffer);

    return a.exec();
}

运行结果

 

B.QBuffer缓冲区的使用场合

1.在线程间进行不同类型的数据传递

2.缓存外部设备中的数据返回

3.数据读取速度小于数据写入速度

C.QDir是Qt中功能强大的目录操作类

1.Qt中的目录分隔符统一使用’/’

2.QDir能够对目录进行任意的操作–创建、删除、重命名

3.QDir能够获取指定目录中的所有条目–文件和文件夹

4.QDir能够使用过滤字符串获取指定条目

5.QDir能够获取系统中的所有根目录

目录操作基础示例

 

C.QFileSystemWatcher用于监控文件和目录的状态变化

1.能够监控特定目录和文件的状态

2.能够同时对多个目录和文件进行监控

3.当目录或者文件发生改变时将触发信号

4.可以通过信号与槽的机制捕捉信号并作出响应

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一种跨平台的应用程序开发框架,可以用于开发各种类型的应用程序,包括图形用户界面应用程序。要通过Qt获取HDMI数据流并显示,可以通过以下步骤实现: 1. 首先,需要使用Qt的多媒体模块来处理音频和视频数据。通过导入相应的类库,可以在Qt应用程序中使用多媒体功能。 2. 使用Qt的多媒体模块的媒体播放器类,可以创建一个用于播放HDMI数据流的播放器对象。该类提供了各种功能,包括播放、暂停、停止和音量控制等。 3. 使用Qt的视频窗口类,可以创建一个用于显示HDMI数据流的视频窗口。该类提供了图像显示、大小调整和位置控制等功能。 4. 将播放器对象与视频窗口对象进行关联,将HDMI数据流绑定到视频窗口进行显示。可以通过设置播放器对象的源来指定要播放的HDMI数据流。 5. 启动Qt应用程序,在应用程序中打开视频窗口,然后开始播放HDMI数据流。可以通过调用播放器对象的播放方法来启动播放。 6. 如果需要对HDMI数据流进行处理,可以使用Qt的视频采集功能。该功能可以获取HDMI数据流的原始图像数据,并进行进一步处理,如图像处理、分析和识别等。 总结起来,要通过Qt获取HDMI数据流并显示,需要使用Qt的多媒体模块来处理音频和视频数据,创建一个用于播放HDMI数据流的播放器对象,并将其与一个用于显示HDMI数据流的视频窗口对象进行关联。然后,启动Qt应用程序并播放HDMI数据流。如果需要对HDMI数据流进行处理,可以使用Qt的视频采集功能。以上是一个大致的框架,具体实现还需要根据具体需求进行相应的调整和细节处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值