《C++ GUI Qt 4 编程》 笔记(五)

第15章 网络

QFtp
QHttp

QTcpSocket QSslSocket
QUdpSocket

使用QCoreApplication而不是QApplication以避免连接到QtGui库

QUrl类提供了一个高级接口,用来提取URL的不同部分,如文件名称、路径、协议和端口

当所有请求都已处理完时,QFtp就发射done(bool)信号,bool表明是否有错误发生

FTP指令在Qt的事件循环中排队并等待执行。

QFtp提供的FTP指令函数
connectToHost()
login() close() list() cd() get() put() remove()
mkdir() rmdir() rename()

使用rawCommand() 可以执行任意FTP指令
ftp.rawCommand(“SITE CHMOD 755 fortune”)

QFtp信号
commandStarted(int) // int 指令ID号
commandFinished(int, bool)
stateChanged() // 只要连接进入了一个新状态就会发射该信号
done(bool) // 一旦指令队列变空,就会发射这个信号
listInfo(const QUrlInfo&) // 对list()处理的每一个文件调用该信号
如果发生错误,QFtp会自动清空指令队列,错误指令后面的指令将不会执行

.pro
QT += network

QUrlInfo urlInfo;
urlInfo.isSymLink()

QHttp
get() post() 是异步工作的,调用时立即返回,当控制权回到Qt事件循环时才会开始传输数据

QHttp貌似在Qt5中已经不存在了

QTcpSocket

连接成功后会发送connected()信号
连接失败会发送error(QAbstracSocket::SocketError)信号
readyRead()信号 只要QTcpSocket已经从服务器收到新数据,就会发射该信号

QTcpServer 信号
incomingConnection(int socketId)

QTcpServer
.listen(QHostAddress::Any, 6178); // any 表示 本地主机上的任意IP地址 0.0.0.0

基于行

发送数据使用QTextStream

QHostInfo::fromName()
QHostInfo::lookupHost()

UTP客户端

第16章 XML

QtXml模块的三个不同编程接口
QXmlStreamReader 一个用于读取格式良好的XML文档的快速解析器
DOM 将XML文档转换为应用程序可以遍历的树形结构
SAX 通过虚拟函数直接向应用程序报告解析事件

XML文件写入,三种方法:
1. 使用QXmlStreamWriter
2. 在内存中以DOM树的结构表示数据,并要求树结构将自己写到文件中
3. 手动生成XML

QXmlStreamReader
.readNext()
.isStartElement()
.isCharacters()

.pro
QT += xml

Qt的SAX类时对基于SAX2的java实现的模拟

QXmlSimpleReader
QXmlContentHandler
QXmlErrorHandler

继承自QXmlDefaultHandler
重写事件处理函数
startDocument()
startElement()
characters()
endElement()
endDocument()
fatalError()

XML保存

QXmlStreamWriter自动处理转义字符

发布者

yjwx0017

C++软件工程师