【qt】跳转到另一个界面

news/2024/9/23 18:34:34/

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

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.效果演示


http://www.ppmy.cn/news/1511393.html

相关文章

HTML补充——表格表单

一、表格 1、在现实生活中&#xff0c;我们经常需要使用表格来表示一些格式化数据&#xff1a;课程表、人名表、成绩单 同样在网页中我们也需要使用表格&#xff0c;我们通过table标签创建表格。 2、在table标签中使用tr表示表格中的一行&#xff0c;有几个tr就有几行&#xff…

掌握ChatGPT写作艺术:从入门到精通的四个层次

这些周末我仔细研究了如何通过优化提示词提升ChatGPT输出内容的质量。 关于如何使用ChatGPT辅助我们的写作&#xff0c;我归纳了以下规律&#xff0c;希望能为你带来启发。 一、写作步骤 撰写一篇文章&#xff0c;思路上必须是从抽象到具体逐步深入。 首先我们需要明确写什么…

SQL注入(原理、分类、union、POST注入)

目录 【学习目标、重难点知识】 【学习目标】 【重难点知识】 SQL注入简介 SQL注入原理 SQL注入类型 MySQL与SQL注入的相关知识 information_schema 数据库的结构 数据库查询语句 limit的用法 需要记住的几个函数 注释符号 SQL注入探测方法 SQL注入漏洞攻击流程…

回溯算法——LeetCode47 全排列 II

题目 力扣题目链接 思路 47.全排列 II 代码 注意注释部分&#xff0c;以及去重的逻辑&#xff08;很重要&#xff01;&#xff09; class Solution { private:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& num…

Linux第十节课 - gdb + 冯诺依曼体系结构

科普&#xff1a;开发流程 一个项目开发&#xff1a;项目经理 产品经理 程序员 测试&#xff08;可能有&#xff09;--->&#xff08;开发团队&#xff09; 产品经理提出来需求 --->>> 项目经理分配任务 ---> 程序员开发 --->>> 测试部门提交…

docker做Llm开发时可能会遇到的问题

如果没有开启GPU&#xff0c;会报错 docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]. 原因可能是 &#xff1a;没有安装 GPU Docker 运行时 则按照如下参照安装&#xff0c; 基于 Docker 的深度学习环境&…

Linux 用户管理和权限分配

一、Linux 用户分类 超级管理员、普通用户、傀儡用户 1&#xff0c;root #皇帝用户&#xff0c;定制规则的用户&#xff0c;系统高级管理员&#xff1b;【0】 2&#xff0c;普通用户 #老百姓&#xff0c;官员&#xff1b;有特定的权限&#xff0c;权限是root授予的&#xff…

智能调度 | 多台AGV为什么不会撞在一起?

AGV叉车 随着智能仓储物流系统、柔性制造系统的广泛应用&#xff0c;工厂自动化、计算机集成制造系统技术的逐步发展&#xff0c;常见的智能装备AGV小车的功能愈发齐全&#xff0c;应用范围与技术水平也得到迅猛发展。 AGV作为仓储物流自动化搬运装卸的重要工具&#xff0c;通…