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 ...
随机推荐
- python之路第四篇(基础篇)
一.冒泡算法实现: 方法一: li = [13,33,12,80,66,1] print li for m in range(4): num1 = li[m] num2 = li[m+1] if nu ...
- jvm内存分配和回收策略
在上一篇中,已经介绍了内存结构是什么样的. 这篇来介绍一下 内存是怎么分配的,和怎么回收的.(基本取自<深入理解Java虚拟机>一书) java技术体系中所提倡的自动内存管理最终可以归结为 ...
- DataGridView一些常用操作
SqlConnection conn = new SqlConnection('Server=(local);DataBase=test;User=sa;Pwd=sa'); SqlDataAdapte ...
- RabbitMQ与AMQP协议
AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 ...
- EsRejectedExecutionException排错与线程池类型
1.EsRejectedExecutionException异常示例 java.util.concurrent.ExecutionException: RemoteTransportException ...
- 我的第一个python web开发框架(7)——本地部署前端访问服务器
PS:本系列内容进度节奏会放的很慢,每次知识点都尽量少一点,这样大家接触的知识点少了,会更容易理解,因为少即是多.另外,对于后面代码部分,虽然尽量不用那些复杂的封装和类,但它并不表示看了就能全部记住, ...
- python学习记录-socket模块
主要使用的模块是socket模块,在这个模块中可以找到socket()函数,该函数用于创建套接字对象.套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信. 1.socket类型 构造函数: ...
- Java中public,protected,default,private的访问权限问题(简明扼要)
import packa.*;//导入了packa包中所有的类.(不包括包中的子包)一般不会用,用哪个导入哪个. 导包的原则:用到哪个类,就导入哪个类.所有字母都小写. 权限列表: public ...
- Emgu.CV(一)
由于这块的知识不少,会分好几期写完 什么是OpenCV? OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效--由一 ...
- 损失函数&经验函数
损失函数:度量模型一次预测的好坏 经验函数:度量模型平均意义下的预测好坏 输出预测值F(x)与实际值Y可能不一致也可能一致,损失函数(Loss function)可以度量一次预测,记作L(Y,F(x) ...