QT页面跳转

本文档详细介绍了如何在Qt环境中利用信号与槽机制实现场景间的跳转。通过在界面头文件中定义信号,在cpp文件中激活信号,并在目标界面中定义接收信号的槽函数,最后在main.cpp中建立信号与槽的连接,从而实现界面的隐藏与显示。主要涉及的文件包括main.cpp、widget.h、widget.cpp、widget1.h和widget1.cpp,以及相应的槽函数和信号声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

1. 界面一头文件添加信号

2.界面一cpp文件            

3.界面二头文件

4.界面二cpp文件

5.main.cpp

二、源文件

1.main.cpp

2.widget.h

3.widget.cpp

4.widget1.h

5.widget1.cpp


前言

        本章使用信号与槽机制实现页面跳转

效果展示

一、界面跳转步骤

1. 界面一头文件添加信号

      

2.界面一cpp文件   

按钮槽函数激活信号        

void Widget::on_pushButton_clicked() //按钮槽函数
{
    this->hide();            //隐藏本界面
        emit showWidget1();    //激活信号
}

3.界面二头文件

添加接收信号槽函数

4.界面二cpp文件

槽函数实现显示界面

void widget1::recvWidget()
{
    this->show(); //显示本界面
}

5.main.cpp

注意事项:

        一定要创建每一个界面对象,使用connect函数将信号和槽函数关联起来,当使用emit激活信号的时候,该信号关联的槽函数就会执行

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    widget1 w1;

    QObject::connect(&w,SIGNAL(showWidget1()),&w1,SLOT(recvWidget()));
    QObject::connect(&w1,SIGNAL(showWidget()),&w,SLOT(recvW1()));

    return a.exec();
}

二、源文件

1.main.cpp

#include "widget.h"
#include "widget1.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    widget1 w1;

    QObject::connect(&w,SIGNAL(showWidget1()),&w1,SLOT(recvWidget()));
    QObject::connect(&w1,SIGNAL(showWidget()),&w,SLOT(recvW1()));

    return a.exec();
}

2.widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

    void recvW1();

signals:
    void showWidget1();

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

3.widget.cpp

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

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

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


void Widget::on_pushButton_clicked()
{
    this->hide();
        emit showWidget1();
}

void Widget::recvW1()
{
    this->show();
}

4.widget1.h

#ifndef WIDGET1_H
#define WIDGET1_H

#include <QWidget>

namespace Ui {
class widget1;
}

class widget1 : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();
    void recvWidget();

signals:
    void showWidget();

private:
    Ui::widget1 *ui;
};

#endif // WIDGET1_H

5.widget1.cpp

#include "widget1.h"
#include "ui_widget1.h"

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

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

void widget1::on_pushButton_clicked()
{
    this->hide();
        emit showWidget();
}

void widget1::recvWidget()
{
    this->show(); //显示本界面
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值