第4课:Qt5多窗口切换

多窗口切换可以说项目中100%会用到
当用户登录的时候,显示登录窗口,成功之后跳到主窗口,主窗口可能还有若干功能,需要再跳到其他窗口,而这些的实现,就是多窗口切换

我们还是用例子来说明:
1.先建一个QT项目,选Application->Qt Widgets Application创建之后,会生成主窗口文件
2.在界面文件上右击,选择添加新文件,我们依次添加dialog1.ui  dialog2.ui,添加成功之后,对应的源文件也会自动生成,非常的方便
创建好的效果如图一
3.设计界面,如图二
4.编写代码
dialog1和dialog2只是为了演示切换,代码一样,只贴一份
头文件
dialog1.h
#ifndef DIALOG1_H
#define DIALOG1_H

#include <QDialog>

namespace Ui {
class Dialog1;
}

class Dialog1 : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog1(QWidget *parent = 0);
    ~Dialog1();

private:
    Ui::Dialog1 *ui;
};

#endif // DIALOG1_H


mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "dialog1.h"
#include "dialog2.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
  Ui::MainWindow *ui;
  Dialog1 dialog1;
  Dialog2 dialog2;
private slots:
  void on_pushButton_clicked();
  void on_pushButton_2_clicked();
  void on_pushButton_3_clicked();
};

#endif // MAINWINDOW_H

源文件:
dialog1.cpp
#include "dialog1.h"
#include "ui_dialog1.h"

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

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

mainwindow.cpp
#include <QtWidgets/QApplication>
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :   
    QMainWindow(parent),   
    ui(new Ui::MainWindow)   
{   
    ui->setupUi(this);   
   
}   
   
MainWindow::~MainWindow()   
{   
    delete ui;   
}   
   
void MainWindow::on_pushButton_clicked()
{
    this->hide();
    dialog1.show();
    dialog1.exec();
    this->show();
}
void MainWindow::on_pushButton_2_clicked()
{
    this->close();
    dialog2.show();
    dialog2.exec();
    this->show();
}
void MainWindow::on_pushButton_3_clicked()
{
    this->close();
} 

图一:

图二: