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中添加代码
void new_widget_6::on_pushButton_clicked()
{this->parentWidget()->show(); //调用parentWidget()返回上一界面的this指针,并显示delete this; //关闭本窗口
}
完整代码
#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"
void MainWindow::on_pushButton_6_clicked()
{new_widget_6 *win = new new_widget_6(this);win->show(); //显示子界面this->hide(); //关闭主界面
}
完整代码
#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中的分界面处理选择隐藏或者删除