当前位置: 首页 > news >正文

QT DAY6

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);socket = new QTcpSocket(this);//如果连接服务器成功,该客户端就会发射一个connected的信号。//我们可以将信号连接到自定义的槽函数中处理相关逻辑//由于该链接只需连接一次,所以卸载构造函数中即可connect(socket,&QTcpSocket::connected,this,&Widget::connected_slot);//客户端与服务器连接后,如果服务器想客户端发来数据,那么该客户端就会自动发送一个readRead信号//我们可以将该信号连接到自定义的槽函数中处理相关逻辑connect(socket,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);connect(socket,&QTcpSocket::disconnected,this,&Widget::disconnected_slot);
}Widget::~Widget()
{delete ui;
}void Widget::on_connectBtn_clicked()
{//获取ui界面的信息userName = ui -> usernameEdit -> text();QString hostName = ui -> ipEdit -> text();quint16 port = ui -> portEdit ->text().toUInt();//调用函数连接到主机socket -> connectToHost(hostName,port);ui ->ipEdit -> setEnabled(false);ui ->portEdit -> setEnabled(false);ui ->connectBtn -> setEnabled(false);ui ->usernameEdit -> setEnabled(false);
}void Widget::connected_slot(){QMessageBox::information(this,"成功","连接服务器成功");QString msg = userName +"进入聊天室";socket -> write(msg.toLocal8Bit());
}void Widget::readyRead_slot(){//读取该客户端信号对应槽函数的实现QByteArray msg = socket ->readAll();ui -> msgList -> addItem(QString::fromLocal8Bit(msg));}void Widget::on_sendBtn_clicked()
{QString m = ui ->msgEdit ->text();QString msg = userName + ":"+m;socket -> write(msg.toLocal8Bit());ui -> msgEdit -> clear();}//断开服务器按钮对应的槽函数
void Widget::on_disConnectBtn_clicked()
{QString msg = userName + ":离开聊天室";socket -> write(msg.toLocal8Bit());//调用成员函数disconnectFromHost//功能:断开客户端与服务器的连接socket -> disconnectFromHost();//当客户端与服务器断开连接后,该客户端就会发射一个disconnected的信号//我们可以将该信号与自定义的槽函数连接ui ->ipEdit -> setEnabled(true);ui ->portEdit -> setEnabled(true);ui ->connectBtn -> setEnabled(true);ui ->usernameEdit -> setEnabled(true);
}void Widget::disconnected_slot(){QMessageBox::information(this,"退出","断开成功");
}

http://www.lryc.cn/news/159074.html

相关文章:

  • Slint学习文档
  • 【最新!七麦下载量analysis参数】逆向分析与Python实现加密算法
  • 蓝桥杯练习题(3的倍数)
  • 安装Qe-7.2细节
  • 3.运行项目
  • 【算法题】2651. 计算列车到站时间
  • Mybatis传递实体对象只能直接获取,不能使用对象.属性方式获取
  • flink 写入数据到 kafka 后,数据过一段时间自动删除
  • golong基础相关操作--一
  • 【深度学习】基于卷积神经网络的铁路信号灯识别方法
  • DR IP-SoC China 2023 Day演讲预告 | 龙智Perforce专家解析芯片开发中的数字资产管理
  • 解决github连接不上的问题
  • # DevOps名词定义梳理
  • Redis Cluster
  • Pandas常用指令
  • FPGA实战小项目3
  • mysql创建用户
  • 程序员写好简历的5个关键点
  • Vue:关于如何配置一级路由和二级路由的方法
  • 【论文绘图】seaborn分类数据绘图
  • KubeSphere Namespace 数据删除事故分析与解决全记录
  • mysql场景题:最近7天连续3天登陆用户,字段,id,date(已去重)
  • 华为OD机试 - 最差产品奖 - 双端队列 deque(Java 2023 B卷 200分)
  • 【校招VIP】前端算法考察之链表算法
  • uni-app之android离线自定义基座
  • 【AWS】实操-保护 Amazon S3 VPC 终端节点通信
  • C# Color颜色RGB对照表
  • Thread中几个常用的api详解join,interrupt
  • Golang项目实战(三)
  • TSUMU58CDT9-1显示器芯片方案