首先mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "mymainwindow.h"//页面二的对应类的头文件
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
MyMainWindow *ppage2=NULL; // 用来保存页面二的实例化对象的地址
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mymainwindow.h"
#include<QPushButton>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->ppage2=new MyMainWindow;//实例化页面二类
connect(ui->pbt1,&QPushButton::clicked,[=](){
//所谓的切换窗口,就是把主窗体隐藏,子窗体显示
this->hide();//隐藏,主窗口页面释放
this->ppage2->show();//显示第二个界面
});
connect(this->ppage2,&MyMainWindow::back,[=](){
this->ppage2->hide();
this->show();
});
}
MainWindow::~MainWindow()
{
delete ui;
}
MyMainWindow.h
#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MyMainWindow;
}
class MyMainWindow : public QMainWindow
{
Q_OBJECT
signals:
void back();//定义一个信号
public:
explicit MyMainWindow(QWidget *parent = 0);
~MyMainWindow();
private:
Ui::MyMainWindow *ui;
};
#endif // MYMAINWINDOW_H
main
#include "mymainwindow.h"
#include "ui_mymainwindow.h"
#include<QPushButton>
MyMainWindow::MyMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyMainWindow)
{
ui->setupUi(this);
connect(ui->pbt2,&QPushButton::clicked,[=](){
//发一个信号过去
emit this->back();
});
}
MyMainWindow::~MyMainWindow()
{
delete ui;
}
mianwindows.ui
Mymianwindows.ui