完成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();
}

现象:

相关推荐
Felven10 分钟前
C2. Potions (Hard Version)
c++
Tyler_TXZ1 小时前
C++C语言之——树
c语言·c++·算法·
旖旎夜光1 小时前
LeetCode 30:串联所有单词的子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
星恒随风1 小时前
C++ 红黑树封装(二):迭代器、const_iterator 与 operator[] 完整实现 mymap 和 myset
开发语言·c++·状态模式
小小龙学IT2 小时前
oneTBB 开源并行编程库深度解析:从工作窃取调度器到 flow graph 实战
c++·开源
ShineWinsu3 小时前
对于C++:缓冲区管理的详细解析
linux·c++·面试·编程·笔试·io·缓冲区
张小姐的猫3 小时前
【Linux】网络编程 —— 传输层协议 TCP(下)
linux·运维·服务器·网络·tcp/ip·http·php
h_a_o777oah3 小时前
【算法基础】卡特兰数:递推定义与折线对称公式推导及解题策略
c++·算法·acm·组合数学·卡特兰数·反射原理·动态规划dp
帅气的小峰3 小时前
pybind11与nanobind可以共存吗?如何迁移?
c++·python·cuda·推理引擎
syker3 小时前
SuperNova Compiler v4.2.9 完整开发手册
c++