Qt实现页面跳转与返回上一级(Qt+VS2019)
- 页面跳转
- 返回上一级
页面跳转
-
问题描述:主界面yangc.ui;需要在主界面点击按钮后进入相应子界面,在子界面点击“返回”按钮后返回主界面。
-
在主界面创建按钮后对其进行命名(建议使用独立命名而不要使用默认命名,这样也便于后续程序设计,不易混淆),以下图蓝框中按钮为例,对其命名为strhomologybutton:
-
在VS工程中新建UI界面:项目->ADD Qt Class,选择Qt Widget Class,对其进行命名。
网上很多教程对于VS中新建Qt的UI文件给出的是“Qt GUI Class”,其实就是Qt Widget Class,这是因为VS更新之后Qt也更新出了Widget。
之后发现新建了三个文件:Openstr.ui、Openstr.h、Openstr.cpp:
-
点击按钮进入子界面的实现:
(1)主界面yangc.cpp中添加代码:
此处注意,按照Qt的规范命名格式的话,是不需要在UI界面对其进行槽函数的连接与设置的,否则会导致点击按钮后弹框弹出两个;此处的规范命名是指函数名必须为on_buttonname_clicked() 的格式,此处的“buttonname”即为按钮的名称。
void yangc::on_strhomologybutton_clicked()
{openstr = new Openstr;openstr->show();//Openstr窗口显示this->hide();
}
而对于不规范的命名,则需要设置相应的槽函数:
之后对此命名:
这样设置完槽信号之后即可。
(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();};
返回上一级
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();//本窗口隐藏
}