QT实现界面切换

QT实现界面切换简摘

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先创建出一个QWidget界面(不带菜单栏、状态栏,如果想要实现可以手动添加,或者直接添加QMainWindow),然后在项目文件夹右键添加文件->Qt->设计师界面类->选择Widget(道理同上)->重命名,将其命名为second
这样会产生如下的文件:
在这里插入图片描述
在这里插入图片描述
为了便于区分两个界面,笔者进行了页面颜色的更改,读者只需理解原理即可,可根据喜好自由调节!!!
在第一个界面添加pushbutton按钮,为其objectName更名为toSecondBtn
在这里插入图片描述
在第二个界面添加pushbutton按钮,为其objectName更名为toFirstBtn


second.h


#ifndef SECOND_H
#define SECOND_H

#include <QWidget>

namespace Ui {
class second;
}

class second : public QWidget
{
    Q_OBJECT

public:
    explicit second(QWidget *parent = nullptr);
    ~second();

//添加的内容从这里开始~~ 
signals:
    void toFirst();
//添加的内容到这里结束~~ 

private:
    Ui::second *ui;
};

#endif // SECOND_H

second.cpp


#include "second.h"
#include "ui_second.h"

second::second(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::second)
{
    ui->setupUi(this);
//添加的内容从这里开始~~ 
    connect(ui->to_first_btn,&QPushButton::clicked,this,&second::toFirst);
//添加的内容到这里结束~~ 
}

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

widget.h


#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>

//添加的代码从这里开始~~
#include"second.h"
//添加的代码到这里结束~~

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

//添加的代码从这里开始~~
public:
    second second;
    void showSecond();
    void showFirst();
//添加的代码到这里结束~~

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp


#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
//添加的代码从这里开始~~
    ui->setupUi(this);
    connect(ui->toSecondBtn,&QPushButton::clicked,this,&Widget::showSecond);
    connect(&second,&second::toFirst,this,&Widget::showFirst);
//添加的代码到这里结束~~
}

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

//添加的代码从这里开始~~
void Widget::showSecond()
{
    this->hide();
    second.show();
}
void Widget::showFirst()
{
    this->show();
    second.close();
}
//添加的代码到这里结束~~

会有人好奇,为什么不能在second直接定义一个函数,通过该函数实现second的关闭和widget的显示,因为你是在widget中进行了对于second的实例化,导致widget的显示、关闭等行为只能由widget自己实现,second不能进行越级关闭,就像是公司中上下级关系,widget是领导,second是下级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值