QT小Demo——自制Q群聊天室
作者:互联网
目录
简介
一个简易的模拟Q群聊天的小Demo。
TableWidget
这里在线聊天界面右侧的在线用户是使用TableWidget呈现的,通过这个控件可以方便的统计人数以及xxx是否在其中。参考
QTextStream
QTextStream是一个非常强大的类,它可以对IO设备,QString,QByteArray等类进行方便的读写操作。
在文本流中,QTextStream重载了两种运算符以简化输入输出流的用法,运算符<<被称为插入符,顾名思义,是往该流对象中插入数据。另一个运算符>>被称之为提取符,即从流对象中提取出数据。
参考
QDataStream
QDataStream提供了一种与运行平台无关的存储格式,他不仅支持QList和QMap<K,T>等QT容器类,还支持整型和双精度型等基本的c++类,以及其他许多种qt数据类型,诸如QByteArray、QFont、QImage、QPixmap、QString和QVariant.
参考
UDP网络编程
- 配置文件添加
QT += core gui network
- 加入头文件
#include <QUdpSocket>
- 建立本地信息
//建立套接字对象
udpSocket = new QUdpSocket(this);
//绑定端口号
//bool bind(const QHostAddress &address, quint16 port, QAbstractSocket::BindMode mode)
//bool bind(quint16 port, QAbstractSocket::BindMode mode)
udpSocket->bind(33333,QUdpSocket::ShareAddress |QUdpSocket::ReuseAddressHint);
- 监听信号
connect(udpSocket,&QUdpSocket::readyRead,this,[=](){
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize()); //设置大小
udpSocket->readDatagram(datagram.data(),datagram.size()); //读取数据流
QDataStream in (&datagram,QIODevice::ReadOnly);
});
常用方法 | 说明 |
---|---|
qint64 pendingDatagramSize() const | 返回udp数据报的大小,没有返回-1 |
qint64 readDatagram(char *data, qint64 maxSize, QHostAddress *address = nullptr, quint16 *port = nullptr) | 读取数据,需指定最大字节数 |
qint64 writeDatagram(const char *data, qint64 size, const QHostAddress &address, quint16 port) | 写数据,需指定大小、ip地址、端口 |
标签:聊天室,const,QT,Demo,qint64,quint16,datagram,port,udpSocket 来源: https://blog.csdn.net/wzyaiwl/article/details/115674901