QT页面跳转

目录

前言

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(); //显示本界面
}

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Qt中,页面跳转通常是通过使用StackedWidget和QPushButton来实现的。StackedWidget是一个可以包含多个页面的小部件,每个页面都是一个QWidget。QPushButton用于触发页面切换。 以下是一个简单的示例代码,演示如何在Qt中实现页面跳转: ```cpp #include <QApplication> #include <QPushButton> #include <QStackedWidget> #include <QWidget> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建两个QWidget作为页面 QWidget *page1 = new QWidget(); QWidget *page2 = new QWidget(); // 创建一个StackedWidget并添加页面 QStackedWidget *stackedWidget = new QStackedWidget(); stackedWidget->addWidget(page1); stackedWidget->addWidget(page2); // 创建两个QPushButton用于切换页面 QPushButton *button1 = new QPushButton("Page 1"); QPushButton *button2 = new QPushButton("Page 2"); // 连接按钮单击信号和槽函数,实现页面切换 QObject::connect(button1, &QPushButton::clicked, [=]() { stackedWidget->setCurrentIndex(0); }); QObject::connect(button2, &QPushButton::clicked, [=]() { stackedWidget->setCurrentIndex(1); }); // 创建一个父QWidget并设置布局 QWidget *window = new QWidget(); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(button1); layout->addWidget(button2); layout->addWidget(stackedWidget); window->setLayout(layout); window->show(); return a.exec(); } ``` 在这个示例中,我们创建了两个QWidget作为页面,然后将它们添加到StackedWidget中。我们还创建了两个QPushButton用于切换页面,然后将它们添加到一个垂直布局中。最后,我们将StackedWidget和按钮布局添加到一个父QWidget中,并显示它。 当我们单击按钮时,对应的页面将显示在StackedWidget中。我们使用StackedWidget的setCurrentIndex函数来设置当前页面的索引。在这个示例中,页面1的索引是0,页面2的索引是1。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值