其他分享
首页 > 其他分享> > QT小Demo——自制Q群聊天室

QT小Demo——自制Q群聊天室

作者:互联网

目录

简介

github源码

一个简易的模拟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网络编程

  1. 配置文件添加
QT       += core gui network
  1. 加入头文件
#include <QUdpSocket>
  1. 建立本地信息
 //建立套接字对象
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);
  1. 监听信号
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