#include 'procession.h'
#include 'ui_procession.h'


Procession::Procession(int userid,QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Procession),
    userid(userid)
{
    ui->setupUi(this);
    processionWidget();
    m_socket = new QTcpSocket(this);
    connect(ui->connectBtn, &QPushButton::clicked, this, &Procession::on_pushButton_clicked);
    connect(m_socket, &QTcpSocket::readyRead, this, &Procession::readyRead);
    connect(m_socket, &QTcpSocket::connected, this, &Procession::connected);
    connect(m_socket, &QTcpSocket::disconnected,this,&Procession::disconnected);

}

Procession::~Procession()
{
    delete ui;
}

void Procession::processionWidget()
{
    setWindowTitle('服务器通信');
    setAutoFillBackground(true);
    QPalette palette=this->palette();
    QPixmap pixmap(':/user/image/image/net.jpg');
    palette.setBrush(QPalette::Window, QBrush(pixmap));
    setPalette(palette);
    setFixedSize(600,400);
}

void Procession::on_pushButton_clicked()
{
   QString ip = ui->IP->text();
   QString port = ui->port->text();

   if (ip.isEmpty() || port.isEmpty()) {
       ui->message->clear();
       ui->message->append('请输入有效的IP地址和端口号');
       return;
   }

   ui->message->clear();
   ui->message->append('正在连接中...');
   m_socket->connectToHost(ip, static_cast<quint16>(ui->port->text().toInt()));//避免隐式转换导致的警告
}

void Procession::connected()
{
    ui->message->append('连接成功');
    // 发送userid给服务器
    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out << this->userid;
    m_socket->write(block);
}

void Procession::disconnected()
{
    ui->message->append('连接失败');
    m_socket->close();
}

void Procession::readyRead()
{
    QByteArray data = m_socket->readAll();
    // 解析服务器返回的数据
    QDataStream in(&data, QIODevice::ReadOnly);
    QString suggestion;
    in >> suggestion;
    ui->message->append(suggestion);
    // m_socket->close(); // 可以考虑不关闭连接,以便接收更多数据
}

原文地址: http://www.cveoy.top/t/topic/fCbc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录