完成qt 的TCP客户端的断开连接

实现部分代码:

cpp 复制代码
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    ,cli(new QTcpSocket(this))
{
    ui->setupUi(this);
    ui->sendbut->setEnabled(false);
    ui->msgedit->setEnabled(false);
    ui->disconbut->setEnabled(false);
    Widget::connect(cli,&QTcpSocket::connected,this,&Widget::connect_slot);
    Widget::connect(cli,&QTcpSocket::readyRead,this,&Widget::ReadyRead_slot);
//建立断开连接信号和槽函数的信号与槽连接
    Widget::connect(cli,&QTcpSocket::disconnected,this,&Widget::disconnect_slot);
}
//取消按钮按下槽函数
void Widget::on_disconbut_clicked()
{
    //告诉服务器断开连接
    QString msg = usrname + ": 离开聊天室";
    //将数据发送给服务器
    cli->write(msg.toLocal8Bit());
//与服务器断开连接
    cli->disconnectFromHost();
}
//断开连接信号槽函数
void Widget::disconnect_slot()
{
//更新状态栏
    ui->statlab->setText("未连接服务器");
//改变组件使能
    ui->usrnameedit->setEnabled(true);
    ui->sipedit->setEnabled(true);
    ui->sportedit->setEnabled(true);
    ui->sendbut->setEnabled(false);
    ui->msgedit->setEnabled(false);
    ui->disconbut->setEnabled(false);
//清空文本
    ui->msgedit->clear();
    ui->usrnameedit->clear();
    ui->sipedit->clear();
    ui->sportedit->clear();
}

现象:

相关推荐
智码看视界12 分钟前
C++智能指针全景剖析及面试20问
开发语言·c++·深度学习·面试·内存管理·智能指针
Peregrine91 小时前
C++ - > 类和对象
java·c++·算法
Tech探索者1 小时前
没有公网 IP、不会端口映射?用 Natfrp 轻松远程访问家中 NAS
网络协议·tcp/ip·智能路由器
好好学习O(∩_∩)O2 小时前
[QT] 多线程moveToThread 和易踩的8个坑
开发语言·qt
dog2502 小时前
带宽,时延,抖动的不可能三角
网络·tcp/ip
‎ദ്ദിᵔ.˛.ᵔ₎3 小时前
c++11:fuction包装器
开发语言·c++
霍霍的袁3 小时前
【C++】哈希表实现指南:从原理到开放定址法、链地址法的实现
c++·学习·哈希算法·散列表·visual studio
北i4 小时前
Dubbo 默认超时重试:把下游打雪崩的隐形放大器
开发语言·qt·dubbo
WL学习笔记4 小时前
类和对象(下)
c++·类和对象
傲世仙尊5 小时前
拷贝构造-传值传参的连锁反应与隐式函数的三个局限
c++