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信号槽的定义
()定义信号函数
signals:
void ShowTowForm(); //定义信号函数 ()发送信号
void threeform::ToTwoForm()
{
emit ShowTowForm(); //通过自定义的信号函数发送信号
this->hide();
} ()接收信号
connect(form3,SIGNAL(ShowTowForm()),this,SLOT(ShowThreeRespond())); //接收信号
参数:
form3:发送信号的类
ShowTowForm:form3类中发送信号的函数
this:接收信号的类
ShowThreeRespond:接收信号后this类中的响应函数
三、隐藏、显示窗口
this->hide(); //隐藏窗口
this->show(); //显示窗口
三个头文件分别为:
1、头文件oneform.h
#ifndef ONEFORM_H
#define ONEFORM_H #include <QWidget>
#include "twoform.h" namespace Ui {
class oneform;
} class oneform : public QWidget
{
Q_OBJECT public:
explicit oneform(QWidget *parent = );
~oneform();
protected slots:
void ToTowForm(); //切换到第二页
void ShowOneRespond(); //接收到第二页发送的信号后响应的函数
private:
Ui::oneform *ui;
void Init();
twoform *form2;
}; #endif // ONEFORM_H
2、头文件towform.h
#ifndef TWOFORM_H
#define TWOFORM_H #include <QWidget>
#include "threeform.h" namespace Ui {
class twoform;
} class twoform : public QWidget
{
Q_OBJECT public:
explicit twoform(QWidget *parent = );
~twoform(); protected slots:
void ToOneForm(); //发送信号到oneform
void ToThreeFrom(); //跳转到threeform
void ShowThreeRespond(); //接收到threeform发送过来的自定义信号响应槽函数 signals:
void ShowOneForm(); //自定义信号函数,发送信号给oneform
private:
Ui::twoform *ui;
void Init(); //初始化界面
threeform *form3; }; #endif // TWOFORM_H
3、头文件threeform.h
#ifndef THREEFORM_H
#define THREEFORM_H #include <QWidget> namespace Ui {
class threeform;
} class threeform : public QWidget
{
Q_OBJECT public:
explicit threeform(QWidget *parent = );
~threeform();
protected slots:
void ToTwoForm(); //切换到第二页
signals:
void ShowTowForm(); //发送信号
private:
Ui::threeform *ui;
void Init();
}; #endif // THREEFORM_H
三个源文件分别为:
1、源文件oneform.cpp
#include "oneform.h"
#include "ui_oneform.h"
#include <QMovie> oneform::oneform(QWidget *parent) :
QWidget(parent),
ui(new Ui::oneform)
{
ui->setupUi(this);
Init();
} oneform::~oneform()
{
delete ui;
} void oneform::Init()
{
QMovie *movie = new QMovie("../form/1.gif");
movie->start(); //开始播放动态图
ui->label->setMovie(movie); //将图片设置为为动态
ui->label->setScaledContents(true); //尽可能完整的播放整张动图
form2 = new twoform;
connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToTowForm()));//点击按钮响应下一页槽函数
connect(form2,SIGNAL(ShowOneForm()),this,SLOT(ShowOneRespond()));//接收form2发送的信号
} void oneform::ToTowForm()
{
this->hide();//隐藏本页
form2->show();//显示第二页
} void oneform::ShowOneRespond() //接收到form2发送的信号后响应的函数
{
this->show();//显示本页
}
2、源文件twoform.cpp
#include "twoform.h"
#include "ui_twoform.h"
#include <QMovie>
#include <QDebug> twoform::twoform(QWidget *parent) :
QWidget(parent),
ui(new Ui::twoform)
{
ui->setupUi(this);
Init();
} twoform::~twoform()
{
delete ui;
} void twoform::Init()
{
QMovie *movie = new QMovie("../form/2.gif");
movie->start();
ui->label->setMovie(movie);
ui->label->setScaledContents(true);
form3 = new threeform();
connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToOneForm()));
connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(ToThreeFrom()));
connect(form3,SIGNAL(ShowTowForm()),this,SLOT(ShowThreeRespond())); //接收form3发送的信号 } void twoform::ToOneForm()
{
emit ShowOneForm();//发送信号
this->hide(); } void twoform::ToThreeFrom()
{
this->hide();
form3->show(); } void twoform::ShowThreeRespond()
{
this->show();
qDebug()<<"hello world";
}
3、源文件threeform.cpp
#include "threeform.h"
#include "ui_threeform.h"
#include <QMovie> threeform::threeform(QWidget *parent) :
QWidget(parent),
ui(new Ui::threeform)
{
ui->setupUi(this);
Init();
} threeform::~threeform()
{
delete ui;
} void threeform::Init()
{
QMovie *movie = new QMovie("../form/3.gif");
movie->start();
ui->label_2->setMovie(movie);
ui->label_2->setScaledContents(true);
connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToTwoForm()));//绑定切换到第二页的槽函数
} void threeform::ToTwoForm()
{
emit ShowTowForm();//发送信号
this->hide();
}
三个界面文件分别为:
1、oneform的界面文件

2、twoform的界面文件

3、threeform的界面文件

最终效果是这样

QT制作窗口切换的小程序的更多相关文章
- 在线制作一键生成微信小程序实现原理之需求分析
随着微信小程序接口不断的放开,小程序在今年或许是明年必将成为商家的一个标配,这个标配的标准就是要开发周期短,费用低,功能实用.只有这样才能让线下的广大商家快速接入.现在也有好多公司开发出了一键生成快速 ...
- 微信小程序-从零开始制作一个跑步微信小程序
来源:伯乐在线 - 王小树 链接:http://ios.jobbole.com/90603/ 点击 → 申请加入伯乐在线专栏作者 一.准备工作 1.注册一个小程序账号,得用一个没注册过公众号的邮箱注册 ...
- 13.QT多窗口切换list
Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); list = ...
- QT制作一个位图画图板程序
本文学习如何创建一个Qt绘制程序,用户将能够通过使用不同的尺寸和画笔的颜色来表达他们的创造力. 主要功能:保存画板内容为图片.清除画板内容.设置画板大小.设置画笔颜色 新建基于QMainWindow的 ...
- win7系统的CMD窗口切换目录--小计
经常使用win7系统的CMD窗口,需要切换到工作目录,方法如下: 1. Win + R 2. 在命令行输入 cmd 出现如下: C:\Users\admin> 3. 在以上输入 D: (表示切换 ...
- 微信小程序在线制作 自己制作微信小程序
小程序是个什么东西?怎么自己制作微信小程序?微信小程序在线制作难吗?最近老是听这类问题,耳朵都长茧子了. 百牛信息技术bainiu.ltd整理发布于博客园 接下来作为一个技术人员的角度就为大家分析一下 ...
- 微信小程序开发详解——小程序,大颠覆!
微信小程序开发 联系 苏念 188.1414.7927 微信小程序系统开发 微信新功能开发 小程序开发 小程序怎么开发 app小程序开发 简化小程序开发 微信小程序定制 小程序制作 开发微信小程序 ...
- 微信小程序开发学习资料
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- Qt多窗口编程详解
常用的窗体基类是 QWidget.QDialog 和 QMainWindow,在创建 GUI 应用程序时选择窗体基类就是从这 3 个类中选择. QWidget 直接继承于 QObject,是 QDia ...
随机推荐
- 【转】 中兴OLT-C300常用命令
中兴OLT C300show running-config (加载各种板卡)show gpon onu uncfg (查看OLT所有未配置的ONU)show gpon onu uncfg gpon-o ...
- 吾八哥学Python(六):运算符与表达式
上篇简单学习了数学运算符,今天来学习下完整的Python运算符与表达式,具体看下面的表格吧! 表1 运算符与它们的用法 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5得到8.’a’ + ‘ ...
- [置顶]
win10 uwp 参考
态度随意申请专栏,没想到通过 看了我的博客,都是在别的大神博客看到,然后修改他们的 我看到的大神博客 东邪独孤 http://www.cnblogs.com/tcjiaan/ 老周,买了他的<W ...
- Spring装配Bean之XML装配bean
在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...
- 快速排序算法分析--C++版
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试喜欢考这个. 快速排序是C.R.A.Hoar ...
- 设计模式:基于线程池的并发Visitor模式
1.前言 第二篇设计模式的文章我们谈谈Visitor模式. 当然,不是简单的列个的demo,我们以电商网站中的购物车功能为背景,使用线程池实现并发的Visitor模式,并聊聊其中的几个关键点. 一,基 ...
- Vue2.0 v-for 中 :key 到底有什么用?
其实不只是vue,react中在执行列表渲染时也会要求给每个组件添加上key这个属性. 要解释key的作用,不得不先介绍一下虚拟DOM的Diff算法了. 我们知道,vue和react都实现了一套虚拟D ...
- PHP程序员的技术成长之路规划
按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...
- PHP获取文件扩展名的五种方式
这是我应聘实习时遇到的一道笔试题: 使用五种以上方式获取一个文件的扩展名. 要求:dir/upload.image.jpg,找出 .jpg 或者 jpg , 必须使用PHP自带的处理函数进行处理,方法 ...
- require.js实现js模块化编程(二):RequireJS Optimizer
require.js实现js模块化编程(二):RequireJS Optimizer 这一节,我们主要学习一下require.js所提供的一个优化工具r.js的用法. 1.认识RequireJS Op ...