前言:本次实验是在三个窗口之间自由切换,窗口中播放gif格式的动态图。

让我们先来看看使用到的主要的函数:

一、播放gif格式动态图的函数

QMovie *movie = new QMovie("../form/1.gif");  // "../form/1.gif"图片路径
movie->start(); //开始播放动态图
ui->label->setMovie(movie); //将图片设置为为动态
ui->label->setScaledContents(true); //尽可能完整的播放整张动图 ,此处要设置为true

二、singnals信号槽的定义

(1)定义信号函数
signals:void ShowTowForm(); //定义信号函数

(2)发送信号
void threeform::ToTwoForm()
{emit ShowTowForm(); //通过自定义的信号函数发送信号this->hide();
}(3)接收信号connect(form3,SIGNAL(ShowTowForm()),this,SLOT(ShowThreeRespond())); //接收信号参数:form3:发送信号的类ShowTowForm:form3类中发送信号的函数this:接收信号的类ShowThreeRespond:接收信号后this类中的响应函数

三、隐藏、显示窗口

this->hide(); //隐藏窗口
this->show(); //显示窗口

三个头文件分别为:

1、头文件oneform.h

 1 #ifndef ONEFORM_H
 2 #define ONEFORM_H
 3
 4 #include <QWidget>
 5 #include "twoform.h"
 6
 7 namespace Ui {
 8 class oneform;
 9 }
10
11 class oneform : public QWidget
12 {
13     Q_OBJECT
14
15 public:
16     explicit oneform(QWidget *parent = 0);
17     ~oneform();
18 protected slots:
19    void ToTowForm(); //切换到第二页
20    void ShowOneRespond(); //接收到第二页发送的信号后响应的函数
21 private:
22     Ui::oneform *ui;
23     void Init();
24     twoform *form2;
25 };
26
27 #endif // ONEFORM_H

2、头文件towform.h

 1 #ifndef TWOFORM_H
 2 #define TWOFORM_H
 3
 4 #include <QWidget>
 5 #include "threeform.h"
 6
 7 namespace Ui {
 8 class twoform;
 9 }
10
11 class twoform : public QWidget
12 {
13     Q_OBJECT
14
15 public:
16     explicit twoform(QWidget *parent = 0);
17     ~twoform();
18
19
20 protected slots:
21     void ToOneForm(); //发送信号到oneform
22     void ToThreeFrom(); //跳转到threeform
23     void ShowThreeRespond(); //接收到threeform发送过来的自定义信号响应槽函数
24
25 signals:
26     void ShowOneForm(); //自定义信号函数,发送信号给oneform
27 private:
28     Ui::twoform *ui;
29     void Init(); //初始化界面
30     threeform *form3;
31
32 };
33
34 #endif // TWOFORM_H

3、头文件threeform.h

 1 #ifndef THREEFORM_H
 2 #define THREEFORM_H
 3
 4 #include <QWidget>
 5
 6 namespace Ui {
 7 class threeform;
 8 }
 9
10 class threeform : public QWidget
11 {
12     Q_OBJECT
13
14 public:
15     explicit threeform(QWidget *parent = 0);
16     ~threeform();
17 protected slots:
18     void ToTwoForm(); //切换到第二页
19 signals:
20     void ShowTowForm(); //发送信号
21 private:
22     Ui::threeform *ui;
23     void Init();
24 };
25
26 #endif // THREEFORM_H

三个源文件分别为:

1、源文件oneform.cpp

 1 #include "oneform.h"
 2 #include "ui_oneform.h"
 3 #include <QMovie>
 4
 5 oneform::oneform(QWidget *parent) :
 6     QWidget(parent),
 7     ui(new Ui::oneform)
 8 {
 9     ui->setupUi(this);
10     Init();
11 }
12
13 oneform::~oneform()
14 {
15     delete ui;
16 }
17
18 void oneform::Init()
19 {
20     QMovie *movie = new QMovie("../form/1.gif");
21     movie->start(); //开始播放动态图
22     ui->label->setMovie(movie); //将图片设置为为动态
23     ui->label->setScaledContents(true); //尽可能完整的播放整张动图
24     form2 = new twoform;
25     connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToTowForm()));//点击按钮响应下一页槽函数
26     connect(form2,SIGNAL(ShowOneForm()),this,SLOT(ShowOneRespond()));//接收form2发送的信号
27 }
28
29 void oneform::ToTowForm()
30 {
31     this->hide();//隐藏本页
32     form2->show();//显示第二页
33 }
34
35 void oneform::ShowOneRespond() //接收到form2发送的信号后响应的函数
36 {
37     this->show();//显示本页
38 }

2、源文件twoform.cpp

 1 #include "twoform.h"
 2 #include "ui_twoform.h"
 3 #include <QMovie>
 4 #include <QDebug>
 5
 6 twoform::twoform(QWidget *parent) :
 7     QWidget(parent),
 8     ui(new Ui::twoform)
 9 {
10     ui->setupUi(this);
11     Init();
12 }
13
14 twoform::~twoform()
15 {
16     delete ui;
17 }
18
19 void twoform::Init()
20 {
21     QMovie *movie = new QMovie("../form/2.gif");
22     movie->start();
23     ui->label->setMovie(movie);
24     ui->label->setScaledContents(true);
25     form3 = new threeform();
26     connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToOneForm()));
27     connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(ToThreeFrom()));
28     connect(form3,SIGNAL(ShowTowForm()),this,SLOT(ShowThreeRespond())); //接收form3发送的信号
29
30 }
31
32 void twoform::ToOneForm()
33 {
34     emit ShowOneForm();//发送信号
35     this->hide();
36
37 }
38
39 void twoform::ToThreeFrom()
40 {
41     this->hide();
42     form3->show();
43
44 }
45
46 void twoform::ShowThreeRespond()
47 {
48    this->show();
49     qDebug()<<"hello world";
50 }

3、源文件threeform.cpp

 1 #include "threeform.h"
 2 #include "ui_threeform.h"
 3 #include <QMovie>
 4
 5 threeform::threeform(QWidget *parent) :
 6     QWidget(parent),
 7     ui(new Ui::threeform)
 8 {
 9     ui->setupUi(this);
10     Init();
11 }
12
13 threeform::~threeform()
14 {
15     delete ui;
16 }
17
18 void threeform::Init()
19 {
20     QMovie *movie = new QMovie("../form/3.gif");
21     movie->start();
22     ui->label_2->setMovie(movie);
23     ui->label_2->setScaledContents(true);
24     connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToTwoForm()));//绑定切换到第二页的槽函数
25 }
26
27 void threeform::ToTwoForm()
28 {
29     emit ShowTowForm();//发送信号
30     this->hide();
31 }

三个界面文件分别为:

1、oneform的界面文件

2、twoform的界面文件

3、threeform的界面文件

最终效果是这样

转载于:https://www.cnblogs.com/wurenzhong/p/7839945.html

QT制作窗口切换的小程序相关推荐

  1. C++培训_004_制作可视化wifi发射小程序

    前言 这次培训的内容在有一部分在前面的笔记,目录在 同学问的问题 分类下.软工答疑和计科答疑的笔记中.这篇笔记主要讲制作 可视化WIFI发射小程序.因为培训只有一小时的时间限制,当然这不完善,要做出完 ...

  2. 【python】制作一个点单小程序!

    周末总是在吃的方面,及其纠结,今天来制作一个点单小程序,加入自己喜欢吃的东西,来慢慢挑选,让每个周末快乐无限! 一.安装环境 python 3.7.8 QT xlrd.xlwt库使用pip接口进行安装 ...

  3. java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序

    在Java项目中利用continue与break制作一个聊天室小程序 发布时间:2020-12-08 16:03:27 来源:亿速云 阅读:98 作者:Leah 在Java项目中利用continue与 ...

  4. pb程序怎么发布到iis_怎么使用抖音小程序第三方平台系统开发制作发布抖音小程序+教程...

    怎么使用抖音小程序第三方平台系统开发制作发布抖音小程序+教程 抖音短视频APP发布<2019年抖音数据报告>显示,其日活跃用户已经于2020年1月达到4亿,抖音APP受到广大用户追捧的同时 ...

  5. 制作自己的微信小程序要怎么做?

    现在不少人都想要制作自己的微信小程序,不管是企业还是商家都在咨询相关的问题.那么制作自己的微信小程序要怎么做?流程和费用分别又是怎么样的呢?下面个大家一起来看看. 步骤一:要有自己的小程序账号 首先我 ...

  6. 怎么能免费制作自己的微信小程序?

    怎么能免费制作自己的微信小程序? 看下方,小程序的制作有以下四种主要方式: 免费小程序(这里分为三种小程序类型,1.个人小程序2.个体小程序3.企业小程序) [一般个人小程序的话不建议申请,因为权限接 ...

  7. html制作炸金花,微信小程序怎么制作炸金花?微信小程序制作炸金花的方法

    很多朋友喜欢玩炸金花游戏,那么怎么在微信小程序上制作炸金花呢?下面就是小编带来的完整详细的教程,想要学习的小伙伴就赶紧看过来吧. 微信小程序怎么制作炸金花?微信小程序制作炸金花的方法 app.json ...

  8. VR场景切换-微信小程序

    VR场景切换-微信小程序 业务需求 开发软件 技术方案 技术文档 微信小程序项目关键代码 app.json app.js index.json index.js index.wxml index.wx ...

  9. 基于Java+SpringBoot制作一个校园圈子小程序

    制作一个校园圈子小程序,有效连接信息供需双方,用户可获取和发布需求信息.参与互动交流,适用于同校.同城.社区交流.客户互动.同学/老师注册发布信息等场景. 微信小程序实战开发专栏 一.小程序 1.1 ...

最新文章

  1. 暖风熏得游人醉,直把杭州作汴州 | 把将直角当做斜角来发车
  2. MS Reporting Services 报表开发
  3. Vue.js指令实例
  4. linux 安装tomcat 权限不足问题
  5. docker查看命令帮助手册
  6. 使用SpringBoot yml配置文件
  7. 微型计算机的普通显示器通常有两组引线 即,微型计算机的显示屏通常具有两组引线,即()...
  8. python经纬度获取县名_利用 Python 批量获取县镇运输距离
  9. vue项目实践教程2:使用vux设计登录注册,并讲解vue路由,切换页面标题等内容
  10. 在网页中嵌入任意字体(特殊字体/自定义字体)的解决方案
  11. fisco bcos 区块链配置文件位置
  12. PHP倒序后五个字符串,并显示
  13. CodeForces 980 E The Number Games
  14. oracle 求班级平均分
  15. VS2015 C#6.0 中的那些新特性(转)
  16. python一键打包32版exe脚本
  17. 自动更新纯真IP数据库
  18. 高效编写脚本的技巧分享
  19. 计网 ---第10章 网络安全
  20. 如何用TortoiseSVN将项目代码提交到SVN

热门文章

  1. 仿QQ空间用一个tableview显示多种自定义cell
  2. [转]ISTQB FL初级认证考试资料(中文)
  3. linux上如何主指定的静态路由永久有效
  4. converter 冷迁
  5. 如何判断Android手机当前是否联网?
  6. 把一台Cisco路由器配置为帧中继交换机
  7. RHCE课程-RH131Linux管理笔记八-安装和管理XEN虚拟机
  8. Python制作当年第一款手机游戏-贪吃蛇游戏(练习)
  9. QT5中如何使用SQLite
  10. SQL-Hive中的Select From解析