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 ...
随机推荐
- DB2插入数据 sqlcode302 sqlstate22001错误如何解决?
总结:出现这种错误的原因主要是,插入数据时的长度和数据库中定义的长度不匹配或超出限制.
- [Gitlab运维系列]Gitlab 403 forbidden 并发引起IP被封
问题 带着团队使用Git,使用的是自搭建的Gitlab.但今天打开页面的时候显示的是空白页面,上面还有一次文本Forbidden. 原因 Gitlab使用rack_attack做了并发访问的限制. 解 ...
- Mybatis了解(配置)
Mybatis是一个基于jdbc映射框架.它跟hibernate一样都是对数据库进行操作的.Mybatis 它是通过配置xml或者是注解来进行映射的配置,最后实现操作接口与pojo来操作数据库. 因此 ...
- 简易js模板引擎
前面 js 模板引擎有很多很多,我以前经常用 art-template ,有时候也会拿 vue 来当模板引擎用. 直到...... 年初的时候,我还在上个项目组,那时候代码规范是未经允许不能使用 [外 ...
- 阿凡题UWP的源码公开
高考结束了!这现在就是一款我不会用的app了...所以我以后很少能去维护它了 所以现在决定公开它的源码吧 代码写的相当烂,是自己中早期的一个作品了 里面还有一些自己没填完的坑以及挖到一半的坑.... ...
- python中时间日期格式化符号:
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数( ...
- Django(二)
QuerySet与惰性机制: 所谓惰性机制:Publisher.objects.all()或者所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个Que ...
- UISearchBar的扩展使用
1. 设置背景颜色 let searchBar = UISearchBar.init() searchBar.barTintColor = UIColor.white 2. 去除上下黑线 let bg ...
- 获取Django项目的全部url
在为一个项目添加权限时,遇到一个问题,就是为项目所有的url设置权限,但是一个一个手动输入太麻烦了,所以考虑用代码获取到一个项目所有的url 首先,考虑到项目最外层的urlpartterns,因为所有 ...
- centos6.5配置uwsgi与nginx支持django
一.centos中升级python 1. > wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz # https://ww ...