66 lines
1.9 KiB
C++
66 lines
1.9 KiB
C++
#include "widget.h"
|
|
#include "ui_widget.h"
|
|
|
|
Widget::Widget(QWidget *parent)
|
|
: QWidget(parent)
|
|
, ui(new Ui::Widget)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
// 设置默认地址和端口
|
|
ui->IP_Edit->setText(default_target_ip);
|
|
ui->Port_Edit->setText(default_target_port);
|
|
|
|
// 初始化 socket 类
|
|
socket = new QTcpSocket;
|
|
}
|
|
|
|
Widget::~Widget()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void Widget::on_ConnectButton_clicked()
|
|
{
|
|
// 获取用户输入的 IP 地址和端口号
|
|
QString target_ip = ui->IP_Edit->text();
|
|
QString target_port= ui->Port_Edit->text();
|
|
|
|
// 提示用户开始连接服务器
|
|
ui->Message_Edit->clear();
|
|
ui->Message_Edit->insertPlainText("connect to " + target_ip + ":" + target_port + " ...\n");
|
|
|
|
// 连接服务器
|
|
// QHostAddress(target_ip) -> 将 QString 类型转换为 QHostAddress 类型
|
|
// target_port.toUShort() -> 将 QString 类型转换为 quint16 类型
|
|
socket->connectToHost(QHostAddress(target_ip), target_port.toUShort());
|
|
|
|
// 判断服务器是否连接成功
|
|
// 如果连接成功, socket 对象会发出一个信号
|
|
connect(socket, &QTcpSocket::connected, [this](){
|
|
// 连接成功后输出用户提示
|
|
ui->Message_Edit->insertPlainText("Message: connected!\n");
|
|
// 隐藏当前窗口
|
|
this->hide();
|
|
|
|
// 实例化目标窗口对象
|
|
cheat *target_window = new cheat(socket);
|
|
// 调用 show() 方法显示窗口
|
|
target_window->show();
|
|
});
|
|
|
|
// 连接异常
|
|
// 当连接状态异常, 例如断开连接, socket 对象也会发出一个信号
|
|
// &QTcpSocket::disconnect -> 连接断开信号
|
|
connect(socket, &QTcpSocket::disconnected, [this](){
|
|
// 提示用户连接断开
|
|
ui->Message_Edit->insertPlainText("Message: disconnect!\n");
|
|
});
|
|
}
|
|
|
|
// 清除信息区显示内容
|
|
void Widget::on_ClearButton_clicked()
|
|
{
|
|
ui->Message_Edit->clear();
|
|
}
|