Qt | QDataStream 类(数据流)

2024-06-16 02:04
文章标签 qt qdatastream 数据流

本文主要是介绍Qt | QDataStream 类(数据流),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01、读/写对象原理

1、QDataStream 类负责以二进制方式读/写程序中的对象,输入源和输出目样标可以是QIODevice、QByteArray 对象。

2、字节序:即多字节数据(即大于一个字节的数据)在内存中的存储顺序,有如下两种方式

 Little-Endian(LE,小端):即低位字节存储在低地址端,高位字节存储在高地址端

 Big-Endian(BE,大端):即高位字节存储在低地址端,低位字节储倣在高地址端。这是 QDataStream 的默认字节序。

 比如对于整数 0x2345,若按 big-endian(大端)顺序存储,则按 0x23、0x45 的顺序存储,若按 little-endian(小端)顺序存储,则以 0x45、0x23 的顺序存储。

3、序列化(serializable):是把对象状态转换为可保存或可传输的形式的过程,与其对应的是反序列化,序列化和反序列化保证了数据易于存储和传输。数据通常以二进制序列的形式进行传输,因此序列化通常是把对象转换为字节序列的过程,其相反过程称为反序列化。

4、QDataStream 支持的 Qt 类型有QBrush、QColor、QDateTime、QFont、QPixmap、QString、QVariant等类型,还包括容器类型,比如 QList、QVector、QSet、QMap等,支持的 Qt类型的完整列表可参阅帮助文档 Serializing Qt Data Types

5、使用 QDataStream 读/写二进制数据的步骤如下(以读/写到 QFile 为例):

这篇关于Qt | QDataStream 类(数据流)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065206

相关文章

QT 中ListView和ListWidget有什么区别

ListView和ListWidget在Qt框架中都是用于显示列表数据的控件,但它们在使用方法和特性上存在一些明显的差异。以下是关于它们用法不一样的地方的详细分析: 数据管理方式: ListView:使用QAbstractItemModel数据模型来管理和显示列表数据。QAbstractItemModel是一个抽象类,允许开发者自定义数据模型以适应特定的数据结构和需求。这使得ListView在处

如何使用Qt的PIMPL习惯用法(PIMPL Idiom

) PIMPL是指“Pointer to IMPLementation”(指向实现的指针),意味着将实现细节隐藏起来,用户类无需关注这些实现细节。在Qt中常用PIMPL习惯用法来清晰地区分接口与实现,尽管Qt官方文档并未详细说明该机制。本文将演示如何在Qt中使用PIMPL习惯用法,并以一个简单的坐标输入对话框作为实例。 原理与动机 PIMPL的核心在于将类的实现细节封装在一个私有类中,这个私

【Qt6.3 基础教程 17】 Qt布局管理详解:创建直观和响应式UI界面

文章目录 前言布局管理的基础为什么需要布局管理器? 盒布局:水平和垂直排列小部件示例:创建水平盒布局 栅格布局:在网格中对齐小部件示例:创建栅格布局 表单布局:为表单创建标签和字段示例:创建表单布局 调整空间和伸缩性示例:增加弹性空间 总结 前言 当您开始使用Qt设计用户界面(UI)时,理解布局管理是至关重要的。布局管理不仅关系到UI的外观,更直接影响用户交互的体验。本篇博

【Qt6.3 基础教程 16】 掌握Qt中的时间和日期:QTimer和QDateTime的高效应用

文章目录 前言QTimer:定时任务的强大工具QTimer的基本用法高级特性:单次定时器 QDateTime:处理日期和时间获取当前日期和时间日期和时间的格式化输出日期和时间计算 用例:创建一个倒计时应用结论 前言 在开发桌面应用程序时,处理时间和日期是一个常见且重要的任务。Qt框架提供了强大的工具来处理与时间相关的功能,其中QTimer和QDateTime是最核心的类。本

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

最近刚刚接触XILINX的ZYNQ板,刚接触没有十天。XILINX定位它为SOC,我也很认同,起码比TI定位MPU为SOC强很多。据说今年TI的最新产品也加入了ZYNQ板。 之前的MIPS处理器设计与实现的项目就算做告一段落,搞了将近7个月,成果显著,收获颇多,最近打算搞搞ZYNQ。 之前MIPS也有一套交叉编译工具,不过是老师提供的,自己也尝试搞了搞,太辛苦了,而且也没什么成果,因为我

Qt 5.2.0 qwt-6.1.0

环境:win7(32) qt-5.2.0 qwt-6.1.0(qt-6.1.0说支持qt5以上的版本,但是我在配置前没找到最新的qt-5.2.0与qwt-6.1.0,其实步骤的差不多,暂时没发现版本引起的问题) 一.添加环境变量(在cmd测试下qmake,如果有问题重启电脑):  Add "C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin" to your systems

leetcode刷题(42)——703. 数据流中的第K大元素

设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。 示例: int k = 3;int[] arr = [4,5,8,2];KthLargest kthLar

防止在 Qt 中触发信号

在 Qt 中工作时,有时我们需要暂时阻止某些信号的触发。以下是一个经典场景:我们有一个 QCheckBox 对象,当用户勾选或取消勾选时,需要调用一个函数,因此我们将这个函数连接到 stateChanged(int state) 信号。然而,在某些条件下,我们在代码中更改 QCheckBox 的状态,这会导致触发不需要的信号。那么如何在特定情况下防止信号触发呢? 使用 clicked 信号 如

Python中使用PyQT5库时报错:没有Qt平台插件可以初始化

一、发现问题:无限易pythonGo打开执行的时候报:“没有Qt平台插件可以初始化,请重新安装应用程序。”的错误,点击确定后无限易崩溃闪退。 二、解决问题: 1、重新安装依赖,打开CMD输入pip list,查看Qt5库是否已安装,如果不确定是否完整安装可以再次安装一遍。 2、配置环境变量(注意是用户变量),变量名:QT_QPA_PLATFORM_PLUGIN_PATH 变量值:在CM

Qt——系统

目录 概述 事件 鼠标事件 进入、离开事件 按下事件 释放事件 双击事件 移动事件 滚轮事件 按键事件 单个按键 组合按键 定时器 QTimerEvent QTimer 窗口事件 文件 输入输出设备 文件读写类 文件和目录信息类 多线程 常用API 线程安全 互斥锁 条件变量 信号量 网络 UDP Socket TCP Socket HT