Qt实现页面跳转与返回上一级(Qt+VS2019)

  • 页面跳转
  • 返回上一级

页面跳转

  1. 问题描述:主界面yangc.ui;需要在主界面点击按钮后进入相应子界面,在子界面点击“返回”按钮后返回主界面。

  2. 在主界面创建按钮后对其进行命名(建议使用独立命名而不要使用默认命名,这样也便于后续程序设计,不易混淆),以下图蓝框中按钮为例,对其命名为strhomologybutton:
    Qt实现页面跳转与返回上一级页面(Qt+VS2019)-编程知识网

  3. 在VS工程中新建UI界面:项目->ADD Qt Class,选择Qt Widget Class,对其进行命名。
    网上很多教程对于VS中新建Qt的UI文件给出的是“Qt GUI Class”,其实就是Qt Widget Class,这是因为VS更新之后Qt也更新出了Widget。
    Qt实现页面跳转与返回上一级页面(Qt+VS2019)-编程知识网
    之后发现新建了三个文件:Openstr.ui、Openstr.h、Openstr.cpp:
    Qt实现页面跳转与返回上一级页面(Qt+VS2019)-编程知识网

  4. 点击按钮进入子界面的实现:
    (1)主界面yangc.cpp中添加代码:
    此处注意,按照Qt的规范命名格式的话,是不需要在UI界面对其进行槽函数的连接与设置的,否则会导致点击按钮后弹框弹出两个;此处的规范命名是指函数名必须为on_buttonname_clicked() 的格式,此处的“buttonname”即为按钮的名称。

void yangc::on_strhomologybutton_clicked()
{openstr = new Openstr;openstr->show();//Openstr窗口显示this->hide();
}

而对于不规范的命名,则需要设置相应的槽函数:
Qt实现页面跳转与返回上一级页面(Qt+VS2019)-编程知识网
之后对此命名:
Qt实现页面跳转与返回上一级页面(Qt+VS2019)-编程知识网
这样设置完槽信号之后即可。
(2)主界面的yangc.h中添加如下代码:
增设头文件:

#include"Openstr.h"

private添加:

Openstr * openstr;

private slots:

private slots:void on_strhomologybutton_clicked();

整个文件如下:

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_yangc.h"
#include"qmessagebox.h"
#include"Openstr.h"class yangc : public QMainWindow
{Q_OBJECTpublic:yangc(QWidget *parent = Q_NULLPTR);private:Ui::yangcClass ui;Openstr * openstr;private slots:void on_strhomologybutton_clicked();};

返回上一级

  1. openstr.ui如图,返回按钮命名为“returnbutton”:
    Qt实现页面跳转与返回上一级页面(Qt+VS2019)-编程知识网
  2. openstr.h中添加:
private slots:void on_returnbutton_clicked();

全部代码:

#pragma once#include <QWidget>
#include "ui_Openstr.h"class Openstr : public QWidget
{Q_OBJECTpublic:Openstr(QWidget *parent = Q_NULLPTR);~Openstr();private:Ui::Openstr ui;private slots:void on_returnbutton_clicked();
};

3.主界面yangc.cpp中添加:

void Openstr::on_returnbutton_clicked()
{QMessageBox message(QMessageBox::NoIcon, "Tip", "Back successfully ");message.exec();yangc* Yangc = new yangc;Yangc->show();//program窗口显示this->hide();//本窗口隐藏
}

整体效果如下:
Qt实现页面跳转与返回上一级页面(Qt+VS2019)-编程知识网