目录
denglu.cpp、main.cpp、widget.cpp
一、界面展示(界面用ui 设计)
群成员展示界面( denglu)
聊天界面展示( widget )
二、代码展示 (所有代码非原创)
denglu.h和widget.h
#ifndef DENGLU_H
#define DENGLU_H
#include <QWidget>
namespace Ui {
class denglu;
}
class denglu : public QWidget
{
Q_OBJECT
public:
explicit denglu(QWidget *parent = nullptr);
~denglu();
private:
Ui::denglu *ui;
QVector<bool> IsShow;
};
#endif // DENGLU_H
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QUdpSocket>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent,QString name);
//重写关闭事件
void closeEvent(QCloseEvent *);
enum Msgtype{Msg,UserEnter,UserLeft};//枚举 分别代表 普通信息 用户进入 用户离开
void sndMsg(Msgtype type);//广播udp信息
QString getName();//获取名字
QString getMsg();//获取聊天信息
void userEnter(QString username);//处理用户进入
void userLeft(QString username,QString time);//处理用户离开
void ReceiveMessage(); //接受UDP消息
~Widget();
signals:
void closeWidget();
private:
Ui::Widget *ui;
QString myname;
quint16 port;//端口
QUdpSocket *udpSocket;//udp 套接字
};
#endif // WIDGET_H
denglu.cpp、main.cpp、widget.cpp
#include "denglu.h"
#include "ui_denglu.h"
#include<QIcon>
#include<QToolButton>
#include"widget.h"
#include<QMessageBox>
denglu::denglu(QWidget *parent) :
QWidget(parent),
ui(new Ui::denglu)
{
ui->setupUi(this);
//设置图标
//路径: 冒号+前缀+路径
this->setWindowIcon(QIcon(":/imagine/qq.jpg"));
//设置名称
this->setWindowTitle("qq 2022");
QList<QString> nameList;
nameList<<"泼猴"<<"哪吒"<<"菩萨"<<"玉帝老2"<<"如来老6"<<"师傅"<<"偷吃人参果"<<"沙僧"<<"小白";
QStringList iconNameList; //图标资源列表
iconNameList << "1"<< "2" <<"3" <<"4"<< "5"<<"6"<<"7"<<"8"<<"9";
QVector< QToolButton *> vector;
for(int i=0;i<9;i++)
{
QToolButton *btn=new QToolButton(this);
//加载图标
btn->setIcon(QPixmap(QString(":/imagine/%1.jpg").arg(iconName