您的位置:首页 > 健康 > 养生 > 【qt】跳转到另一个界面

【qt】跳转到另一个界面

2025/1/4 6:45:45 来源:https://blog.csdn.net/yyqzjw/article/details/141291129  浏览:    关键词:【qt】跳转到另一个界面

如何在一个界面跳转到另一个界面呢?

1.具体步骤

1.先新建一个界面
在这里插入图片描述
2.选择qt设计师界面
在这里插入图片描述
3.选择W
在这里插入图片描述
4.新界面名称
在这里插入图片描述
5.界面设计
因为我们要实现通信,需要一个发送信息栏,一个发送按钮,一个清空发送栏按钮
在这里插入图片描述
6.实现跳转
在这里插入图片描述
我们可以参考主页面的实现,但是我们跳转到另一个界面,需要关闭原先的界面,我们只需要将他隐藏起来,然后调用新界面,我们是什么时候调用新界面呢
在这里插入图片描述
在建立连接之后,先隐藏原界面,调用新界面,我们需要在老界面那里调用新界面,所以要在widget中包含chat头文件
在这里插入图片描述
但是这里有一个问题,就是我们需要在新界面实现通信,所以我们必须将建立好的socket传过去
在这里插入图片描述

2.源码分享

chat.h

#ifndef CHAT_H
#define CHAT_H#include <QWidget>
#include<QTcpSocket>
namespace Ui {
class chat;
}class chat : public QWidget
{Q_OBJECTpublic:explicit chat(QTcpSocket*s,QWidget *parent = nullptr);~chat();private:Ui::chat *ui;QTcpSocket*socket;
};#endif // CHAT_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QTcpSocket>
#include<QString>
#include <QHostAddress>
#include<QMessageBox>
#include<chat.h>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_closebutton_clicked();void on_connectbutton_clicked();private:Ui::Widget *ui;QTcpSocket* socket;
};
#endif // WIDGET_H

chat.cpp

#include "chat.h"
#include "ui_chat.h"chat::chat(QTcpSocket *s, QWidget *parent) :QWidget(parent),ui(new Ui::chat)
{ui->setupUi(this);socket=s;}chat::~chat()
{delete ui;
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);socket=new QTcpSocket;}Widget::~Widget()
{delete ui;
}void Widget::on_closebutton_clicked()
{this->close();
}void Widget::on_connectbutton_clicked()
{QString ip=ui->iplabel->text();QString port=ui->portlabel->text();socket->connectToHost(QHostAddress(ip),port.toShort());connect(socket,&QTcpSocket::connected,[this](){QMessageBox::information(this,"连接提示","连接成功");this->hide();chat *newui=new chat(socket);newui->show();});connect(socket,&QTcpSocket::disconnected,[this](){QMessageBox::warning(this,"连接提示","连接异常");});}

3.效果演示

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com