QT多窗口跳转

快速上手:

1.项目新建跳过,先新建一个文件,右击add new

2.选择QT ->QT 设计师界面类

3.下一步(mainwindow或者widget根据自己需求,此处用mainwindow做演示)

4.因为我之前创建过,所以此处类名我设置为new_widget_6(建议自行改动,加深记忆),然后下一步

5.继续下一步

6.接下来跳转到ui,拖拽一个pushbutton,设置返回主界面按钮

7.接着右击转到槽

8.选择clicked()

9.在new_widget_6.cpp中添加代码

cpp 复制代码
void new_widget_6::on_pushButton_clicked()
{
    this->parentWidget()->show();   //调用parentWidget()返回上一界面的this指针,并显示
    delete this;      //关闭本窗口
}

完整代码

cpp 复制代码
#include "new_widget_6.h"
#include "ui_new_widget_6.h"

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

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

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

10.在主界面添加ui

11.依旧右击转到槽,选择clicked()

12。接着在mainwindow.cpp中添加代码

先添加头文件

复制代码
#include "new_widget_6.h"
cpp 复制代码
void MainWindow::on_pushButton_6_clicked()
{
    new_widget_6 *win = new new_widget_6(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}

完整代码

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include "new_widget.h"
#include "new_widget_2.h"
#include "new_widget_3.h"
#include "new_widget_4.h"
#include "new_widget_5.h"
#include "new_widget_6.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();   //关闭主界面
}

void MainWindow::on_pushButton_2_clicked()
{
    new_widget_2 *win = new new_widget_2(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}


void MainWindow::on_pushButton_3_clicked()
{
    new_widget_3 *win = new new_widget_3(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}


void MainWindow::on_pushButton_4_clicked()
{
    new_widget_4 *win = new new_widget_4(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}



void MainWindow::on_pushButton_5_clicked()
{
    new_widget_5 *win = new new_widget_5(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}

void MainWindow::on_pushButton_6_clicked()
{
    new_widget_6 *win = new new_widget_6(this);
    win->show();    //显示子界面
    this->hide();   //关闭主界面
}

12.编译运行

结果:可以点击相互跳转,推荐根据需求对于步骤9中的分界面处理选择隐藏或者删除

相关推荐
caoerzhong10 小时前
JeeWMS 开源 WMS 部署避坑指南:Java 仓库管理系统的环境基线、四类根因与可复现交付
java·开发语言·开源
时间的拾荒人10 小时前
Qt 界面优化:绘图详解 —— 从基础图形到图片处理
开发语言·qt·面试
MayZork10 小时前
Qt 文件操作:QSaveFile 与 QTemporaryFile(含 QTemporaryDir)实战
开发语言·qt
北冥you鱼10 小时前
Go 语言空接口(interface{})使用场景与最佳实践
开发语言·windows·golang
xh didida10 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
个 人 练 习 生11 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
2601_9669496511 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
坤坤子吖11 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
奋斗的阿狸_198611 小时前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
weixin1997010801611 小时前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存