Qt的流框架
来源:互联网 发布:中国法律数据库app 编辑:程序博客网 时间:2024/05/16 19:49
Qt的流框架包含两个核心类QTextStream以及QDataStream,如果所示。
(1)QTextStream将程序中的数据转换为文本格式,输出到一个QString,QIODevice或QByteArray对象。该类还可以做反方向的读取操作,读取这些对象中存放的文本数据,将这些数据转化为程序中的数据。也就是说,QTextStream对数据进行文本格式的输入/输出,在其内部使用两个字节长的QChar类型存放每个字符,使用Unicode编码格式。优点:大大简化了Qt流的总体结构。缺点:在内存中占用两个字节,即使被处理的字符只有一字节;难以处理超过65536个字符的字符集。
QTextCodec负责Unicode与各种字符编码方式之间的转换。一个QTextStream对象指向一个QTextCodec对象。利用这个类,QTextStream可以将文本数据转换为各种字符编码的数据,存放在QIODevice或者QByteArray中。读取数据时,QTextStream也可以将这些设备中具有某种字符编码的数据转换为Unicode编码的数据。
QLocale负责实现各种区域文化。一个QTextStream对象指向一个QLocale对象。利用这个类,QTextStream以某种区域文化输出或者输入文本数据。比如,一旦设定QTextStream的区域文化为德语,浮点数“123.456”将被输出为“123,456"。
QTextStream的成员函数setLocale()用于设置数据输入输出时的区域文化。
使用注意:当读取一个QTextStream对象时,应该使用成员函数atEnd()判读是否抵达流的末端。
(2)QDataStream对数据进行二进制格式的输入/输出。由于QString只存放字符数据,QDataStream的数据源或者输出目标只能是QIODevice或者QByteArray。
QDataStream的丰富功能:
1.统一的字节序,在默认情况下,写入QDataStream的整数都会被转换big-endian字节序,再写入文件。读取时做反向的转换。当然,我们也可以调用其成员函数setByteOrder()
将字节序设置为little-endian。
2.支持多种Qt类型的输入、输出。包括C++的标准类型如int, double等,也处理QByteArray,QFont, QImage, QPixmap,以及QString, 甚至可以处理QList QMap这些复杂内部结构的类模板。
3.支持运算符“>>”以及“<<”。通过运算符重载机制,施加在QDataStream的“>>”以及“<<”以二进制方式进行读写操作。
使用说明:创建一个对文件进行存取操作的QDataStream对象需要定义一个QFile对象,调用其成员函数open()打开一个文件,再定义一个QDataStream对象,在构造函数中将它和前面定义的QFile对象绑定。
QIODevice具有6个子类。
a) 最常用的是QFile,负责文件的处理。
常用操作步骤如下:以文件名位参数构建一个QFile对象。如果文件名中有子目录,子目录之间的分隔符用‘/’。在对一个文件进行读/写之前,用其成员函数open()打开该文件。对文本文件使用QIODevice::Text。成员函数read()、readLine()或者readAll()从该文件读取数据,用write()向该文件写入数据。读取数据时,成员函数atEnd()判断是否已经抵达文件末尾。完成所有写入操作后,掉用成员函数close()关闭文件。
b)QTemporaryFile创建并访问临时文件。
c)QBuffer负责以QIODevice的接口访问一个QByteArray对象。QTextStream和QDataStream都可以直接将一个QByteArray对象作为数据源或者输出目标,只不过QBuffer能够在内部数据变化时发出信号。通过Qt的信号与槽机制,与这些信号相连的对象就能够及时地处理变化的数据。
d)QProcess负责以进程的形式启动一个外部程序,并和该进程进行通信。
e)QTcpSocket负责使用TCP协议进行网络数据的发送和接收。
f)QUdpSocket负责使用UDP协议进行网络数据的发送和接收。
- Qt的流框架
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- Qt的GraphicsView框架
- Qt测试框架的扩展
- Qt动画框架的实现
- Qt动画框架的学习
- 谈谈QT的动画框架
- Qt 的Graphics View框架
- QT的动画框架 概述
- Qt动画框架的学习
- Qt的Graphics/View框架
- QT下的并行框架
- Qt的graphics-view框架的疑问
- Java初学_其他集合框架(LinkedList、HasMap)
- 移动端兼容性
- 解决”企业证书打包的ipa,点击app提示"未受信任的企业级开发者"“的问题
- 【OI做题记录】【BZOJ】【SCOI2005】扫雷Mine
- C语言中的static变量和C++静态数据成员(static member)
- Qt的流框架
- Mybatis源代码分析之类型转换
- MathJax 与Latex符号
- jackson annotations注解详解
- SDR技术原理解析
- 使用Option、Some、None,避免使用null
- 2011 CES将掀智能手机五大发展趋势
- Android 长按弹出框删除当钱
- MYSQL权限