QIODevice 类学习笔记
QIODevice 类学习笔记
Isaaccwoo 2015年12月10日
一、 简介
QIODevice用于对输入输出设备进行管理。输入设备有两种类型,一种是随机访问设备(Random-accessdevices),如文件、缓冲区等;另一种是时序设备(Sequential device),如网络、进程等。可以通过isSequential()函数分辨设备是哪种类型的。
二、 自定义类型
设备的打开方式:OpenMode
enum QIODevice::OpenModeFlag
flags QIODevice::OpenMode
Constant |
Value |
Description |
QIODevice::NotOpen |
0x0000 |
The device is not open. |
QIODevice::ReadOnly |
0x0001 |
The device is open for reading. |
QIODevice::WriteOnly |
0x0002 |
The device is open for writing. Note that this mode implies Truncate. |
QIODevice::ReadWrite |
ReadOnly | WriteOnly |
The device is open for reading and writing. |
QIODevice::Append |
0x0004 |
The device is opened in append mode so that all data is written to the end of the file. |
QIODevice::Truncate |
0x0008 |
If possible, the device is truncated before it is opened. All earlier contents of the device are lost. |
QIODevice::Text |
0x0010 |
When reading, the end-of-line terminators are translated to '\n'. When writing, the end-of-line terminators are translated to the local encoding, for example '\r\n' for Win32. |
QIODevice::Unbuffered |
0x0020 |
Any buffer in the device is bypassed. |
三、 正确的打开方式 输入输出设备的使用方法
1. 构造与析构
函数 |
说明 |
QIODevice() |
|
QIODevice(QObject * parent) |
|
~QIODevice() |
继承类需自行保证close() |
2. OpenMode
返回类型 |
函数 |
说明 |
OpenMode |
openMode() const |
QIODevice::OpenMode |
void [protected] |
setOpenMode(OpenMode openMode) |
|
bool |
isOpen() const |
QIODevice::NotOpen |
bool |
isReadable() const |
QIODevice::ReadOnly |
bool |
isWritable() const |
QIODevice::WriteOnly |
bool |
isTextModeEnabled() const |
QIODevice::Text |
void |
setTextModeEnabled(bool enabled) |
QIODevice::Text |
bool [virtual] |
isSequential() const |
3. 打开关闭设备
返回类型 |
函数 |
说明 |
bool [virtual] |
open(OpenMode mode) |
|
bool |
isOpen() const |
|
void [virtual] |
close() |
|
void [signal] |
aboutToClose() |
|
Bool [virtual] |
reset() |
重打开设备。 不适用于QIODevice::Text类设备。 |
4. 数据读写操作及控制
输入函数 |
||
返回类型 |
函数 |
说明 |
bool [virtual] |
waitForReadyRead(int msecs) |
等待可读 |
void [signal] |
readyRead() |
中断式可读 |
qint64 [virtual] |
bytesAvailable() const |
查询式可读 |
qint64 [protected] [pure virtual] |
readData(char * data, qint64 maxSize) |
读函数 |
qint64 |
read(char * data, qint64 maxSize) |
读 |
QByteArray |
read(qint64 maxSize) |
. |
qint64 |
peek(char * data, qint64 maxSize) |
“偷看” |
QByteArray |
peek(qint64 maxSize) |
. |
QByteArray |
readAll() |
读全部 |
bool [virtual] |
canReadLine() const |
可读行 |
qint64 [virtual] [protected] |
readLineData(char * data, qint64 maxSize) |
读行函数 |
qint64 |
readLine(char * data, qint64 maxSize) |
读行 (maxSize包括行结束字符) |
QByteArray |
readLine(qint64 maxSize = 0) |
读行 |
bool |
getChar(char * c) |
读char |
void |
ungetChar(char c) |
undo char |
void [signal] |
readChannelFinished() |
输入通道结束。 但此时可能仍有数据可读。 |
输出函数 |
||
返回类型 |
函数 |
说明 |
bool [virtual] |
waitForBytesWritten(int msecs) |
等待已写 |
void [signal] |
bytesWritten(qint64 bytes) |
中断式已写 |
qint64 [virtual] |
bytesToWrite() const |
查询式写完 |
qint64 [protected] [pure virtual] |
writeData(const char * data, qint64 maxSize) |
写函数 |
qint64 |
write(const char * data, qint64 maxSize) |
写 |
qint64 |
write(const char * data) |
. |
qint64 |
write(const QByteArray & byteArray) |
. |
bool |
putChar(char c) |
写char |
isSequential()不同有区别的函数 |
||
返回类型 |
函数 |
说明 |
qint64 [virtual] |
pos() const |
|
bool [virtual] |
seek(qint64 pos) |
|
qint64 [virtual] |
size() const |
随机访问设备为区域大小,时序设备为bytesAvailable() |
其他函数 |
||
返回类型 |
函数 |
说明 |
bool [virtual] |
atEnd() const |
|
QString |
errorString() const |
|
void [protected] |
setErrorString(const QString & str) |
注:qint64返回值一般原则为,错误返回-1,成功返回>=0
QIODevice 类学习笔记相关推荐
- Unity API常用方法和类学习笔记2
Unity API常用方法和类学习笔记2 ------Mathf & Input & Vector & Random 类Mathf 一.静态变量 print(Mathf.Deg ...
- Unity API常用方法和类学习笔记1
Unity API常用方法和类学习笔记1 ------主要构架(Unity-Engine.GameObject.Component) 事件 一.事件执行顺序 二.测试代码 using System.C ...
- QFrame类学习笔记
QFrame类学习笔记 参考:https://wenku.baidu.com/view/759c1af565ce050877321322.html https://doc.qt.io/qt-5/qfr ...
- 转载:C++ list 类学习笔记
声明:本文转自http://blog.csdn.net/whz_zb/article/details/6831817 双向循环链表list list是双向循环链表,,每一个元素都知道前面一个元素和后面 ...
- C# Console类学习笔记
Console.Write 表示向控制台直接写入字符串,不进行换行,可继续接着前面的字符写入. Console.WriteLine 表示向控制台写入字符串后换行. Console.Read 表示从控制 ...
- ThreadLocal类学习笔记
这个类在java1.2中就出现了,线程独有的变量(每个线程都有一份变量),使用它的好处之一就是可以少传许多参数. 在哪里用到它呢?有连接池的地方就有它的身影,连接池包括数据库连接池,网络连接池等. i ...
- Java常用类学习笔记
Date类 Date类是在Java中获取日期时间最简单的一个类,可以通过直接实例化对象的方式获得当前的日期时间.得到的日期时间是国外的格式.Date类没有什么特殊的用法,就是简单的获取当前的日期时间. ...
- 《快学Scala》第14章——模式匹配和样例类 学习笔记
Scala有一个十分强大的模式匹配机制,可以应用在很多场合:switch语句.类型查询,以及"析构"(获取复杂表达式中的不同部分).除此之外,Scala还提供了样例类,对模式匹配进 ...
- java calendar赋值_Java calendar类学习笔记
Java Calendar类 calendar类是abstract类,实际使用时实现特定的子类对象 创建一个代表当前日期的Calendar对象 Calendar ss=Calendar.getlnst ...
最新文章
- Hibernate最佳实践
- oracle使用唯一结果集,oracle分页查询结果集重复问题解决方法
- 设计模式--行为型模式
- monty python读音-Monty Python
- php网页登录制作,thinkphp5 系统登录的实现
- JAVA-1007. 素数对猜想 (20)
- 番茄助手破解找到VA_X.dll的位置
- 网络拓扑图自动生成_SAP ABAP关键字语法图和ABAP代码自动生成工具Code Composer
- 大数据平台搭建技术底座 掘金移动互联等行业
- windows/linux远程开关机原理及实现
- 女孩们,请别到职场卖萌,甘当不专…
- 国务院办公厅关于2017年 部分节假日安排的通知 (zz)
- 【设计】工业设计公司设计师的原则
- 智能驾驶看湘江:中国智能网联汽车产业的“长沙样本”
- 泰山OFFICE技术讲座:Times New Roman的kerning研究
- 专业的网站流量分析和统计分析工具
- 考研面试常问问题汇总(包含答案)
- excel打开密码忘记了_如何设置EXCEL文件打开和编辑密码
- LeetCode - 362 敲击计数器(设计)
- 微信公众平台流量主单日广告收入最高达5万元 羡煞偶们
热门文章
- 无线路由器几种加密方式
- 社会化的竞拍​网站有戏吗?
- 【Python入门】:程序设计3
- ​stm32单片机真的可以取代51单片机吗?​
- 对webwork的理解与使用
- ​​​​​​​淘宝双11,618的京东节如何抗住亿级的并发量?
- 【与达梦同行】DM8适配JetBrains_Exposed框架
- 关于AndroidStudio中提示cannot resolve symble R,但程序可以正常build和run的问题
- carsim+simulink联合仿真实现变道 包含路径规划算法+mpc轨迹跟踪算法
- 2021年T电梯修理考试及T电梯修理实操考试视频