QT通过parentWidget()实现多界面跳转及关闭(切换界面和返回前一界面)

2023-11-08

QT通过parentWidget()实现多界面跳转及关闭(切换界面和返回前一界面):

不需要跳转界面相互包含头文件,超简单的方法。
先将第一级的窗口this指针传给次级的的窗口,子窗口通过parentWidget(),返回第一级的this并用来调用show

//传递主界面的this指针给跳转界面
new_widget *win = new new_widget(this);
//调用parentWidget()返回上一界面的this指针,并显示
this->parentWidget()->show(); 

搞定,就这么简单,下面是详细过程。

1. 创建新界面

	在创建好QT工程后,创建需要跳转的新界面。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
然后在分别设计两个不同的ui界面
在这里插入图片描述
在这里插入图片描述

2.将新界面的头文件添加到主界面

在这里插入图片描述

3. 主界面跳转到新界面(点击跳转按钮,触发槽函数,创建新界面显示,并关闭主界面)

//跳转按钮槽函数
void MainWindow::on_pushButton_clicked()
{
    //传递主界面的this指针给跳转界面,否则子界面无法调用parentWidget()
    new_widget *win = new new_widget(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}

4. 新界面返回主界面(通过主界面传递的参数,重新显示主界面)

//功能:返回前一界面
void new_widget::on_pushButton_clicked()
{
    this->parentWidget()->show();   //调用parentWidget()返回上一界面的this指针,并显示
    delete this;      //关闭本窗口
}

5. 完整代码

mainwindow.h(没有添加修改过,可以忽略不看)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include "new_widget.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

//跳转按钮槽函数
void MainWindow::on_pushButton_clicked()
{
    //传递主界面的this指针给跳转界面,否则子界面无法调用parentWidget()
    new_widget *win = new new_widget(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}

new_widget.h(没有添加修改过,可以忽略不看)

#ifndef NEW_WIDGET_H
#define NEW_WIDGET_H

#include <QMainWindow>

namespace Ui {
class new_widget;
}

class new_widget : public QMainWindow
{
    Q_OBJECT

public:
    explicit new_widget(QWidget *parent = nullptr);
    ~new_widget();

private slots:
    void on_pushButton_clicked();

private:
    Ui::new_widget *ui;
};
#endif // NEW_WIDGET_H

new_widget.cpp

#include "new_widget.h"
#include "ui_new_widget.h"
#include <QDebug>

new_widget::new_widget(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::new_widget)
{
    ui->setupUi(this);
    qDebug() << "上一级界面地址 : "<< this->parentWidget();
}

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

//功能:返回前一界面
void new_widget::on_pushButton_clicked()
{
    this->parentWidget()->show();   //调用parentWidget()返回上一界面的this指针,并显示
    delete this;      //关闭本窗口
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT通过parentWidget()实现多界面跳转及关闭(切换界面和返回前一界面) 的相关文章

随机推荐

  • 拷贝构造函数的参数类型必须是引用

    在C 中 构造函数 拷贝构造函数 析构函数和赋值函数 赋值运算符重载 是最基本不过的需要掌握的知识 但是如果我问你 拷贝构造函数的参数为什么必须使用引用类型 这个问题 你会怎么回答 或许你会回答为了减少一次内存拷贝 很惭愧的是 我的第一感觉
  • android实现ios形式的字体,实现各种自定义的字体

    这段时间整个人都是处在一种颓废的状态 不想做任何事情 每天就是行尸般的上班 下班 然后在家玩游戏 状态是差的要死 脑子感觉就是一片混沌态 也不知道要写些啥了 真的是太可怕 为了防止延续 决定先写篇基础的东西压压惊吧 这样的状态真的不想再有了
  • 数据治理-数据质量监控

    数据质量人人有责 这不仅仅只是一句口号 更是数据工作者的生命线 数据质量的好坏直接决定着数据价值高低 数据质量管理是指在数据创建 加工 使用和迁移等过程中 通过开展数据质量定义 过程控制 监测 问题分析和整改 评估与考核等一系列管理活动 提
  • tensorflow中自定义激活函数

    一 tensorflow中常用的模型定义 import tensorflow as tf model tf keras Sequential tf keras layers Dense 64 kernel initializer norma
  • LLVM程序分析与编译转换框架论文分享

    LLVM 2004年论文原文 概述 本文描述了 LLVM 低级虚拟机 一种编译器框架 旨在通过在编译时 链接时 运行时 以及运行之间的空闲时间 LLVM 以静态单一赋值 SSA 形式定义了一种通用的低级代码表示 具有几个新颖的特性 一个简单
  • 飞腾D2000 + X100 调试记录 X100出来的 DP显示有问题(不显示), USB 接口不能使用的问题。

    1 DP显示出问题时的现象及解决问题的方法 1 1 DP显示出问题时的现象 A 板子电压正常 B DP信号在显示屏上有几条颜色的横线在闪 其他都是黑屏 C 使用D2000的调试串口 进入拷入系统盘的系统 发现进入系统正常 之后查看 其他设备
  • vuejs父子传值,兄弟组件传值

    子传父 子组件需要传递的数据 this emit func1 data this emit func1 data 其中func1对应到父组件中 在父组件引入子的模块中使用 v on绑定 对应上面的传值即 v on func1 fatherF
  • 机器学习概率论相关学习笔记

    一 什么是均值 在概率论中 均值是指随机变量的期望值 也称为数学期望 它是对随机变量可能取值的加权平均 其中权重是每个可能取值发生的概率 对于离散型随机变量 均值的计算公式为 x P x 其中 x表示随机变量可能的取值 P x 表示随机变量
  • 蓝桥杯—单片机第十四届底层驱动函数修改

    本文总结了关于14届蓝桥杯单片机底层驱动文件相较13届的变化所需作出的改变 总体区别不大 欢迎批评指正 1 不再提供 h文件 故要牢记头文件书写格式 与引用格式 添加步骤 2 Onewire c文件 1 头文件添加 include reg5
  • 如何分解质因数

    如何分解质因数 质数 因数 合数 和倍数的知识 的结构图 在小学数学里 两个正整数相乘 那么这两个数都叫做积的因数 或称为约数 质数 是指只能被1和自己整除的自然数 其余的叫做合数 上小学的时候 我们就知道所有的 自然数可以分为质数 素数
  • MIPI CSI相关计算

    本文介绍MIPI CSI相关计算 MIPI CSI为目前Image Sensor和Host连接常用的接口 目前MIPI CSI最高传输速率为2 5Gbps lane 也有一些低版本的最高传输速率为1 5Gbps lane 我们在连接Imag
  • Ubuntu中安装Pytorch

    第一步 为PyTorch单独创建conda环境 需要先创建一个单独的conda环境 用于匹配对应的PyTorch版本 这一步不是必须的 但可以很方便的为PyTorch创建一个干净且独立的Python环境 这里使用比较稳定的3 6版本的Pyt
  • 利用python的matplotlib画图技巧

    目录 1 如何完全显示所有刻度 2 修改jupyter notebook输出图片大小 1 如何完全显示所有刻度 如果我们在没有设置坐标轴刻度的情况下 显示坐标情况及代码如下所示 import matplotlib pyplot as plt
  • sonarLint使用

    转载 sonarLint使用 mine wz的博客 CSDN博客
  • 深度学习(32)随机梯度下降十: 手写数字识别问题(层)

    深度学习 32 随机梯度下降十 手写数字识别问题 层 1 数据集 2 网络层 3 网络模型 4 网络训练 本节将利用前面介绍的多层全连接网络的梯度推导结果 直接利用Python循环计算每一层的梯度 并按着梯度下降算法手动更新 由于Tenso
  • Vue-router history模式下Nginx配置

    对于VUE的router mode history 模式 这里主要是为了去除链接上的 开发的时候 一般都不出问题 是因为开发时用的服务器为node Dev环境中已配置好了 nginx运行的时首页没有问题 链接也没有问题 但在点击刷新后 页面
  • 更改WPS云文档数据存储位置

    WPS的默认位置在C盘 当我们文档数据比较多 文件的体积也越来越大时 就会占用C盘的存储空间 下面为更改WPS云文档数据存储位置的具体步骤 双击 WPS网盘 进入WPS网盘界面 在界面右上方的 更多 中选择 同步与设置 选择 设置 在 缓存
  • 【计算机视觉笔记】图像检索学习 (Content Based Image Retrieval)

    论文跟踪 Awesome image retrieval papers https github com willard yuan awesome cbir papers 综述 SIFT Meets CNN A Decade Survey
  • 白嫖 GitHub Pages,轻松搭建个人博客

    Hexo 是一个快速 简单且功能强大的博客框架 使用 Markdown 解析文档 Hexo 能在几秒内生成带有自定义主题并集成各项功能的网站页面 本文采用 Github Pages Hexo 的方式 搭建个人博客 零 准备工作 1 使用个人
  • QT通过parentWidget()实现多界面跳转及关闭(切换界面和返回前一界面)

    QT通过parentWidget 实现多界面跳转及关闭 切换界面和返回前一界面 不需要跳转界面相互包含头文件 超简单的方法 先将第一级的窗口this指针传给次级的的窗口 子窗口通过parentWidget 返回第一级的this并用来调用sh