QT制作窗口切换的小程序
前言:本次实验是在三个窗口之间自由切换,窗口中播放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制作窗口切换的小程序相关推荐
- C++培训_004_制作可视化wifi发射小程序
前言 这次培训的内容在有一部分在前面的笔记,目录在 同学问的问题 分类下.软工答疑和计科答疑的笔记中.这篇笔记主要讲制作 可视化WIFI发射小程序.因为培训只有一小时的时间限制,当然这不完善,要做出完 ...
- 【python】制作一个点单小程序!
周末总是在吃的方面,及其纠结,今天来制作一个点单小程序,加入自己喜欢吃的东西,来慢慢挑选,让每个周末快乐无限! 一.安装环境 python 3.7.8 QT xlrd.xlwt库使用pip接口进行安装 ...
- java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序
在Java项目中利用continue与break制作一个聊天室小程序 发布时间:2020-12-08 16:03:27 来源:亿速云 阅读:98 作者:Leah 在Java项目中利用continue与 ...
- pb程序怎么发布到iis_怎么使用抖音小程序第三方平台系统开发制作发布抖音小程序+教程...
怎么使用抖音小程序第三方平台系统开发制作发布抖音小程序+教程 抖音短视频APP发布<2019年抖音数据报告>显示,其日活跃用户已经于2020年1月达到4亿,抖音APP受到广大用户追捧的同时 ...
- 制作自己的微信小程序要怎么做?
现在不少人都想要制作自己的微信小程序,不管是企业还是商家都在咨询相关的问题.那么制作自己的微信小程序要怎么做?流程和费用分别又是怎么样的呢?下面个大家一起来看看. 步骤一:要有自己的小程序账号 首先我 ...
- 怎么能免费制作自己的微信小程序?
怎么能免费制作自己的微信小程序? 看下方,小程序的制作有以下四种主要方式: 免费小程序(这里分为三种小程序类型,1.个人小程序2.个体小程序3.企业小程序) [一般个人小程序的话不建议申请,因为权限接 ...
- html制作炸金花,微信小程序怎么制作炸金花?微信小程序制作炸金花的方法
很多朋友喜欢玩炸金花游戏,那么怎么在微信小程序上制作炸金花呢?下面就是小编带来的完整详细的教程,想要学习的小伙伴就赶紧看过来吧. 微信小程序怎么制作炸金花?微信小程序制作炸金花的方法 app.json ...
- VR场景切换-微信小程序
VR场景切换-微信小程序 业务需求 开发软件 技术方案 技术文档 微信小程序项目关键代码 app.json app.js index.json index.js index.wxml index.wx ...
- 基于Java+SpringBoot制作一个校园圈子小程序
制作一个校园圈子小程序,有效连接信息供需双方,用户可获取和发布需求信息.参与互动交流,适用于同校.同城.社区交流.客户互动.同学/老师注册发布信息等场景. 微信小程序实战开发专栏 一.小程序 1.1 ...
最新文章
- 暖风熏得游人醉,直把杭州作汴州 | 把将直角当做斜角来发车
- MS Reporting Services 报表开发
- Vue.js指令实例
- linux 安装tomcat 权限不足问题
- docker查看命令帮助手册
- 使用SpringBoot yml配置文件
- 微型计算机的普通显示器通常有两组引线 即,微型计算机的显示屏通常具有两组引线,即()...
- python经纬度获取县名_利用 Python 批量获取县镇运输距离
- vue项目实践教程2:使用vux设计登录注册,并讲解vue路由,切换页面标题等内容
- 在网页中嵌入任意字体(特殊字体/自定义字体)的解决方案
- fisco bcos 区块链配置文件位置
- PHP倒序后五个字符串,并显示
- CodeForces 980 E The Number Games
- oracle 求班级平均分
- VS2015 C#6.0 中的那些新特性(转)
- python一键打包32版exe脚本
- 自动更新纯真IP数据库
- 高效编写脚本的技巧分享
- 计网 ---第10章 网络安全
- 如何用TortoiseSVN将项目代码提交到SVN