#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
, socket(new QTcpSocket(this))
{
ui->setupUi(this);
//初始化界面
ui->lineEdit_2->setEnabled(false);
ui->sendBtn->setEnabled(false);
ui->dissconnectBtn->setEnabled(false);
connect(socket,&QTcpSocket::connected,this,&Widget::connected_slot);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_connectBtn_clicked()
{
QString ip = ui->IPEdit->text();
quint16 port = ui->portEdit->text().toUInt();
socket->connectToHost(ip,port);
}
//connect对应的槽函数
void Widget::connected_slot()
{
//告诉服务器我来了
//组织要发送的语言
userName = ui->userNameEdit->text();
QString msg = userName+":进入聊天室";
//将数据发送给服务器
socket->write(msg.toLocal8Bit());
ui->lineEdit_2->setEnabled(true);
ui->sendBtn->setEnabled(true);
ui->dissconnectBtn->setEnabled(true);
ui->userNameEdit->setEnabled(false);
ui->IPEdit->setEnabled(false);
ui->portEdit->setEnabled(false);
ui->connectBtn->setEnabled(false);
//服务器向客户端发送数据
connect(socket,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);
//客户端向服务器发送断开连接请求
connect(socket,&QTcpSocket::disconnected,this,&Widget::disconnected_slot);
}
void Widget::readyRead_slot()
{
//读取数据
QByteArray msg = socket->readAll();
ui->listWidget->addItem(QString::fromLocal8Bit(msg));
}
void Widget::disconnected_slot()
{
//关闭的功能
ui->sendBtn->setEnabled(false);
ui->lineEdit_2->setEnabled(false);
ui->dissconnectBtn->setEnabled(false);
//打开的功能
ui->userNameEdit->setEnabled(true);
ui->IPEdit->setEnabled(true);
ui->portEdit->setEnabled(true);
ui->connectBtn->setEnabled(true);
}
//发送按钮所对应的槽函数
void Widget::on_sendBtn_clicked()
{
QString msg = ui->lineEdit_2->text();
msg = userName+":"+msg;
socket->write(msg.toLocal8Bit());
ui->lineEdit_2->clear();
}
//断开服务器连接按钮所对应的槽函数
void Widget::on_dissconnectBtn_clicked()
{
//将用户名,IP地址,端口号全部清空,关闭发送按钮
ui->portEdit->clear();
ui->listWidget->clear();
userName = ui->userNameEdit->text();
QString msg = userName+":退出聊天室";
ui->userNameEdit->clear();
//将数据发送给服务器
socket->write(msg.toLocal8Bit());
//断开服务器连接
socket->disconnectFromHost();
}
C++day5
最新推荐文章于 2024-09-14 16:21:49 发布