#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->msgEdit->setEnabled(false); //设置不可以状态
ui->sendButton->setEnabled(false);
ui->disConnectButton_3->setEnabled(false);
connect(socket, &QTcpSocket::connected, this, &Widget::connected_slot);
connect(socket, &QTcpSocket::readyRead, this, &Widget::readyRead_slot);
connect(socket, &QTcpSocket::disconnected, this, &Widget::disconnected_slot);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_connectButton_2_clicked()
{
QString ip = ui->ipEdit->text();
quint16 port = ui->portEdit_4->text().toUInt();
socket->connectToHost(ip,port);
}
void Widget::connected_slot()
{
userName = ui->usernameEdit->text();
//组织一下语言
QString msg = userName + ": 进入聊天室";
//告诉服务器 我来了
socket->write(msg.toLocal8Bit());
ui->msgEdit->setEnabled(true); //设置可以状态
ui->sendButton->setEnabled(true);
ui->disConnectButton_3->setEnabled(true);
ui->usernameEdit->setEnabled(false);//设置不可以状态
ui->ipEdit->setEnabled(false);
ui->portEdit_4->setEnabled(false);
ui->connectButton_2->setEnabled(false);
}
void Widget::readyRead_slot()
{
QByteArray msg = socket->readAll();
//将读取到的信息 放入ui界面上
ui->listWidget->addItem(QString::fromLocal8Bit(msg));
}
void Widget::disconnected_slot()
{
ui->msgEdit->setEnabled(false); //设置不可以状态
ui->sendButton->setEnabled(false);
ui->disConnectButton_3->setEnabled(false);
ui->usernameEdit->setEnabled(true);//设置可以状态
ui->ipEdit->setEnabled(true);
ui->portEdit_4->setEnabled(true);
ui->connectButton_2->setEnabled(true);
}
void Widget::on_sendButton_clicked()
{
QString msg = ui->msgEdit->text();
msg = userName +":" + msg;
socket->write(msg.toLocal8Bit());
// 清空
ui->msgEdit->clear();
}
void Widget::on_disConnectButton_3_clicked()
{
QString msg = userName + ": 离开聊天室";
socket->write(msg.toLocal8Bit());
//让客户端和服务器断开连接
socket->disconnectFromHost();
}
4.11作业
最新推荐文章于 2024-09-28 20:43:29 发布