QT 与 C++实现基于[ TCP ]的谈天室界面

[复制链接]
发表于 2026-2-1 22:56:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

TCP客户端

Widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QTcpSocket>   //客户端类
  5. #include <QMessageBox>
  6. #include <QListWidgetItem>
  7. #include <QDebug>
  8. QT_BEGIN_NAMESPACE
  9. namespace Ui { class Widget; }
  10. QT_END_NAMESPACE
  11. class Widget : public QWidget
  12. {
  13.     Q_OBJECT
  14. public:
  15.     Widget(QWidget *parent = nullptr);
  16.     ~Widget();
  17. public slots:
  18.     void connected_slot();//connected信号对应槽函数的声明
  19.     void readyRead_slot();
  20.     void disconnected_slot();
  21. private slots:
  22.     void on_connectbtn_clicked();
  23.     void on_sendbtn_clicked();
  24.     void on_disconnectbtn_clicked();
  25. private:
  26.     Ui::Widget *ui;
  27.     QString msgfor="";
  28.     //实例化一个客户端指针
  29.     QTcpSocket *socket;
  30.     //定义一个变量存储用户名
  31.     QString userName;
  32. };
  33. #endif // WIDGET_H
复制代码
Widget.cpp

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <string>
  4. #include<iostream>
  5. Widget::Widget(QWidget *parent)
  6.     : QWidget(parent)
  7.     , ui(new Ui::Widget)
  8.     ,socket(new QTcpSocket(this))//给客户端实例化空间
  9. {
  10.     ui->setupUi(this);
  11.     //初始化界面,设置为不可用
  12.     ui->msgEdit->setEnabled(false);
  13.     ui->sendbtn->setEnabled(false);
  14.     ui->disconnectbtn->setEnabled(false);
  15.     //如果成功连接服务器,那么客户端就会自动发射一个connected()信号
  16.     //将该信号连接到自定义的槽函数,书写逻辑代码。由于只需要连接一次,所以连接函数写在构造函数中
  17.     connect(socket, &QTcpSocket::connected, this, &Widget::connected_slot);
  18.     //此时说明客户端和服务器已经成功建立连接,如果服务器发来数据,那么客户端就会自动发射readyRead()信号
  19.     //将该信号连接到自定义的槽函数中,读取数据。由于只需要连接一次,所以连接函数写在构造函数中
  20.     connect(socket, &QTc
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表