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

这是一个使用Qt框架构建的简易模拟QQ群聊天应用,主要涉及TableWidget展示在线用户,QTextStream进行文本流操作,以及QDataStream实现UDP网络编程。通过绑定端口和监听信号,实现实时接收和发送数据报,为聊天功能提供基础支持。
摘要由CSDN通过智能技术生成

简介

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地址、端口
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值