#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
client = new QTcpSocket(this);
ui->setupUi(this);
ui->disConnectBtn->setEnabled(false);
ui->msgEdit->setEnabled(false);
ui->sandBtn->setEnabled(false);
connect(client,&QTcpSocket::connected,this,&Widget::connectedSlot);
connect(client,&QTcpSocket::readyRead,this,&Widget::readyReadSlot);
}
Widget::~Widget()
{
delete ui;
}
//连接按钮对应的槽函数
void Widget::on_connectBtn_clicked()
{
//客户端连接服务器
client->connectToHost(QHostAddress(ui->ipEdit->text()),ui->portEdit->text().toUInt());
}
void Widget::connectedSlot()
{
username = ui->userNameEdit->text();
QString msg = username + ":进入聊天室";
client->write(msg.toLocal8Bit());
ui->disConnectBtn->setEnabled(true);
ui->msgEdit->setEnabled(true);
ui->sandBtn->setEnabled(true);
ui->connectBtn->setEnabled(false);
//如果服务器向客户端发来数据,客户端会自动触发readyread信号
}
void Widget::readyReadSlot()
{
QByteArray msg = client->readAll();
ui->listWidget->addItem(QString::fromLocal8Bit(msg));
}
void Widget::on_sandBtn_clicked()
{
QString msg = username + ":" + ui->msgEdit->text();
client->write(msg.toLocal8Bit());
}
void Widget::on_disConnectBtn_clicked()
{
QString msg = userName + ": 离开聊天室";
socket->write(msg.toLocal8Bit());
client->disconnectFromHost();
ui->disConnectBtn->setEnabled(false);
ui->msgEdit->setEnabled(false);
ui->sandBtn->setEnabled(false);
ui->connectBtn->setEnabled(true);
}
4.11
于 2024-04-12 08:52:48 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)