当前位置:首页 » 《关注互联网》 » 正文

学习QT的两个页面切换(信号和槽方式)

7 人参与  2024年05月16日 08:57  分类 : 《关注互联网》  评论

点击全文阅读


学习QT的两个页面切换(信号和槽方式)

信号与槽方式实现两个Widget切换

学习QT的两个页面切换(信号和槽方式)一、创建工程二、添加新Widget页面三、添加两个Widget界面按钮四、按钮转到槽函数五、功能逻辑的实现六、主要代码七、结语

一、创建工程

新建一个QT项目
在这里插入图片描述
命名为untitled3
在这里插入图片描述
使用qmake编译
在这里插入图片描述
选择Widget
在这里插入图片描述
其他保持默认完成创建

二、添加新Widget页面

Ctrl+N创建Qt设计界面类
在这里插入图片描述
选择Widget模板
在这里插入图片描述
这里是第二个页面,就命名为Widget2好了
在这里插入图片描述
之后选择默认,完成创建!

三、添加两个Widget界面按钮

打开widget.ui文件,拖一个PushButton,文本改为next
在这里插入图片描述
再打开widget2.ui文件,拖一个PushButton,文本改为prev
在这里插入图片描述

四、按钮转到槽函数

这里两个按钮不使用代码,都直接转到槽函数更加方便
在这里插入图片描述
选择clicked
在这里插入图片描述
之后直接生成两个槽函数,先留着等一下再填
在这里插入图片描述
在这里插入图片描述

五、功能逻辑的实现

1.首先在widget.h里面引用头文件widget2.h
在这里插入图片描述
再声明一个类和对象

在这里插入图片描述
2.在widget.cpp的实例化向下一页的对象
在这里插入图片描述
实现进入下一页:点击next按钮时,关闭上一个页面,打开下一个页面
在这里插入图片描述
3.在widget2.cpp里面进一步实现向上一页的逻辑:点击prev按钮时,关闭page2的页面,打开widget的页面。
但是,不能写成类似这样:

this->close();this->xxxxx->show();

因为我们不知道上一页面的地址。
不过上一页面并没有挂掉,而是用hide()藏起来了,所以能够使用它自己来操作页面。
我们可以在widget2中定义一个信号back();点击的时候,发送back()信号:
在这里插入图片描述
在这里插入图片描述
在widget中定义一个connect()函数和槽函数comeBackToPrev(),分别用来连接信号槽和实现页面显示及隐藏。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、主要代码

widget.h

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include "widget2.h"QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget2;class Widget : public QWidget{    Q_OBJECTpublic:    Widget(QWidget *parent = nullptr);    ~Widget();    Widget2 *page2=NULL;private slots:    void on_pushButton_clicked();    void comeBackToPrev();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);    this->page2=new Widget2;    connect(this->page2,SIGNAL(back()),this,SLOT(comeBackToPrev()));}Widget::~Widget(){    delete ui;}void Widget::on_pushButton_clicked(){    this->close();    this->page2->show();}void Widget::comeBackToPrev(){    this->page2->hide();    this->show();}

widget2.h

#ifndef WIDGET2_H#define WIDGET2_H#include <QWidget>namespace Ui {class Widget2;}class Widget2 : public QWidget{    Q_OBJECTpublic:    explicit Widget2(QWidget *parent = nullptr);    ~Widget2();signals:    void back();private slots:    void on_pushButton_clicked();private:    Ui::Widget2 *ui;};#endif // WIDGET2_H

widget2.cpp

#include "widget2.h"#include "ui_widget2.h"Widget2::Widget2(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget2){    ui->setupUi(this);}Widget2::~Widget2(){    delete ui;}void Widget2::on_pushButton_clicked(){    emit this->back();}

七、结语

至此,就能够实现两个页面之间切换了。这是本人初学时候的感悟,觉得有一定的实用性,就顺手记录下来,如有错漏不足烦请指正。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/109289.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 完结文娘子为师弟夺我秘宝后我灭她满门李凤年柳安澜月婵后续(又名:娘子为师弟夺我秘宝后我灭她满门)列表_完结文娘子为师弟夺我秘宝后我灭她满门李凤年柳安澜月婵后续(又名:娘子为师弟夺我秘宝后我灭她满门)
  • (番外)+(全书)叶墨谨幽璃(幽思燃烬忘川路+全书后续)全书在线_叶墨谨幽璃免费列表_笔趣阁(幽思燃烬忘川路+全书后续)
  • 谢聿深的从此你我银河相望免费沈时愿谢聿深全书在线
  • 为给青梅出气,老公打掉我们八个月的孩子限时免费完整章节_「孟寻孟太太子宫」章节免费试读
  • 全书免费从此晚意不再迟晚意宋淮止白清欢番外精彩分享_从此晚意不再迟晚意宋淮止白清欢番外精彩分享全书免费
  • 阴差来了:+后续+结局(陈龙)_(阴差来了:+后续+结局)列表_笔趣阁(陈龙)
  • 衔棠夜烬照骨行:结局+番外高分佳作(许安宁裴景行),衔棠夜烬照骨行:结局+番外高分佳作
  • 癌症晚期,高冷老婆疯狂报复我:结局+(沈云汐傅南琛)_癌症晚期,高冷老婆疯狂报复我:结局+
  • [闪婚皇叔,五旬老太重生搞钱赢麻了]小说免费在线阅读_[杜春枝赵老六]节选试读
  • [重楼难解相思苦]小说节选推荐_「徐湘姒吴一衡叶父」精彩章节分享
  • 傅淮安宋棠(又名:又是棠辞枝雪时)完本_完本傅淮安宋棠(又名:又是棠辞枝雪时)
  • (番外)+(全书)林书意陆沉(微风轻拂又见你陆沉:+后续+结局)_林书意陆沉免费列表_笔趣阁(微风轻拂又见你陆沉:+后续+结局)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1