QT聊天系统类似QQ聊天(基于TCP、UDP)

编程入门 行业动态 更新时间:2024-10-24 14:15:15

QT聊天系统<a href=https://www.elefans.com/category/jswz/34/1770819.html style=类似QQ聊天(基于TCP、UDP)"/>

QT聊天系统类似QQ聊天(基于TCP、UDP)

QT聊天系统类似QQ聊天(基于TCP、UDP)

想要更多项目私wo!!!

一、项目简介

此项目参考QQ的登陆界面和聊天界面,主要的组成有三个界面,分别是登录界面、私聊界面和群聊界面。

二、项目截图

登入界面
登陆中界面

私聊界面

群聊界面

表情界面

三、部分代码

login.c

/*想要更多项目私wo!!!*/
#include "login.h"
#include "ui_login.h"
#include <QNetworkRequest>
#include <QByteArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QNetworkReply>
#include <QJsonArray>
#include <QMessageBox>
#include <QSettings>
#include "./showWidget/showwidget.h"
#include "./Sunshine/sunshine.h"//外部变量 需要定义在函数外,否则程序会将其认定为局部变量,同时会将调用的那个文件中的 user_account 认为未定义的变量,出现连接错误
QString user_account = "";void sleep(unsigned int msec)
{QTime dieTime = QTime::currentTime().addMSecs(msec);while( QTime::currentTime() < dieTime )QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}Login::Login(QWidget *parent) :QWidget(parent),ui(new Ui::Login)
{ui->setupUi(this);i=0;setWindowFlags(Qt::FramelessWindowHint|Qt::Tool);QMovie *movie = new QMovie(":/new/prefix1/blue70-2.gif");ui->label->setMovie(movie);ui->label_2->installEventFilter(this);ui->label_3->installEventFilter(this);movie->start();ui->label_4->setStyleSheet("border-radius:15px;background-color:green;border-image:url(':/new/prefix1/12.jpg')");ui->label_5->setOpenExternalLinks(true);ui->label_5->installEventFilter(this);animation=new QPropertyAnimation(ui->label_4, "geometry");animation->setDuration(400);animation->setStartValue(QRect(30, 170, 85, 85));animation->setEndValue(QRect(150, 170, 85, 85));}Login::~Login()
{delete ui;
}/***************************** Function: mousePressEvent(QMouseEvent *event)** Description:*   鼠标按下事件*
****************************/
void Login::mousePressEvent(QMouseEvent *event)
{if(event->button() == Qt::LeftButton){this->setMouseTracking(true);mouse_press = true;//鼠标相对于窗体的位置(或者使用event->globalPos() - this->pos())move_point = event->pos();qDebug()<<"移动1";qDebug()<<event->source();}}/***************************** Function: mouseReleaseEvent(QMouseEvent *event)** Description:*   设置鼠标为未被按下*
****************************/
void Login::mouseReleaseEvent(QMouseEvent *event)
{//设置鼠标为未被按下mouse_press = false;
}/***************************** Function: mouseMoveEvent(QMouseEvent *event)** Description:*   鼠标移动事件*
****************************/
void Login::mouseMoveEvent(QMouseEvent *event)
{//若鼠标左键被按下//  qDebug()<<"mouse_press="<<event->globalPos();if(mouse_press){i++;//鼠标相对于屏幕的位置QPoint move_pos = event->globalPos();qDebug()<<"移动"<<i;//移动主窗体位置this->move(move_pos - move_point);}
}/***************************** Function: eventFilter(QObject *object, QEvent *e)** Description:*   事件*
****************************/
bool Login::eventFilter(QObject *object, QEvent *e)
{if(e->type()==QEvent::MouseButtonPress&&object==ui->label_3){close();}else if(e->type()==QEvent::MouseButtonPress&&object==ui->label_2){showMinimized();qDebug()<<"最小化";}else if(e->type()==QEvent::MouseButtonPress&&object==ui->label_5){QDesktopServices::openUrl(QUrl(""));mouse_press=false;}return false;
}/***************************** Function: on_pushButton_clicked()** Description:*   登录按键触发事件*
****************************/
void Login::on_pushButton_clicked()
{showWidget *show_ui = new showWidget;Sunshine *sun_ui = new Sunshine;QObject::connect(this,SIGNAL(inShowUI(QString,QString)),show_ui,SLOT(in_ShowUI(QString, QString)));//获取账号密码user_account = ui->lineEdit->text();QString pasd = ui->lineEdit_2->text();QSettings *readIni = new QSettings("all_user.ini",QSettings::Format::IniFormat);readIni->beginGroup(user_account);                                                          //获取节点位置QString value = readIni->value("password").toString();                                      //获取密码值QString name = readIni->value("name").toString();                                      //获取用户名QString head = readIni->value("head_portrait").toString();                                      //获取用户名qDebug()<<ui->lineEdit->text();qDebug()<< "126___password   " << value << endl;qDebug()<< "127___name   " << name << endl;if(ui->lineEdit->text()==""||ui->lineEdit_2->text()==""){qDebug()<<"内容为空";ui->label_6->setText("账号密码不能为空");}else if(pasd == value && pasd != NULL)                                                           //账号密码匹配{readIni->endGroup();ui->label_6->hide();ui->pushButton->hide();ui->lineEdit->hide();ui->lineEdit_2->hide();ui->label_5->hide();ui->label_7->hide();animation->start();sleep(3000);this->hide();//emit inIndexUi(name, head);emit inShowUI(name, head);sun_ui->show();sleep(3000);show_ui->show();}else{QMessageBox *msgBox;msgBox = new QMessageBox("警告",                              ///--这里是设置消息框标题"密码或账号错误!!",                                        ///--这里是设置消息框显示的内容QMessageBox::Critical,                                   ///--这里是在消息框显示的图标QMessageBox::Ok | QMessageBox::Default,                  ///---这里是显示消息框上的按钮情况QMessageBox::Cancel | QMessageBox::Escape,              ///---这里与 键盘上的 escape 键结合。当用户按下该键,消息框将执行cancel按钮事件0);														///---这里是 定义第三个按钮, 该例子 只是 了显示2个按钮msgBox->show();}}void Login::on_lineEdit_2_returnPressed()
{qDebug()<<"输入结束66";
}void Login::showEvent(QShowEvent *event)
{mouse_press=false;
}
/*想要更多项目私wo!!!*/
void Login::on_lineEdit_textEdited(const QString &arg1)
{qDebug()<<"正在编辑"+arg1;if(ui->label_6->text()!=""){qDebug()<<"进入了这个函数";ui->label_6->setText("");}}

更多推荐

QT聊天系统类似QQ聊天(基于TCP、UDP)

本文发布于:2024-03-05 14:22:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1712533.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:类似   系统   QT   UDP   TCP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!