QT制作窗口切换的小程序

news2024/12/25 0:45:18

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(); //显示窗口

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

三个头文件分别为:

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的界面文件

最终效果是这样

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试人到30岁+,在岗位上工作如何破局?

最近一个学生也可以说是朋友&#xff0c;他遇到了一个让他困扰的职场难题&#xff0c;背景如下&#xff1a; 1&#xff09;他们公司准备搞 安全测试 了&#xff0c;现在有人员培训的计划&#xff0c;所以全组有学习安全测试课程的安排。 2&#xff09;他自己目前专职性能测试…

12月17日第壹简报,星期六,农历十一月廿四

12月17日第壹简报&#xff0c;星期六&#xff0c;农历十一月廿四1. 数字人民币试点再扩容&#xff1a;粤苏冀川4省全覆盖&#xff0c;新增济南、南宁、昆明等5座城市。2. 人民币兑美元中间价调降448点至6.9791&#xff0c;降幅创5月27日以来最大。3. 政府出面站台、鼓励居民团购…

DropBox系列-安卓DropBox介绍

前言&#xff1a; 作者本人负责公司的APM监控模块&#xff0c;因为工作的原因&#xff0c;对ANR&#xff0c;crash等流程研究的比较多&#xff0c;最近在打造APM监控平台的时候&#xff0c;顺带对DropBox的实现原理进行了一定的学习和研究&#xff0c;发现了一些妙用&#xff…

Dubbo 1 分布式系统中的相关概念 1.3 架构演进

Dubbo 【黑马程序员Dubbo快速入门&#xff0c;Java分布式框架dubbo教程】 1 分布式系统中的相关概念 文章目录Dubbo1 分布式系统中的相关概念1.3 架构演进1.3.1 架构演进1.3.2 架构演进 - 单体架构1.3.3 架构演进 - 垂直架构1.3.4 架构演进 - 分布式架构1.3.5 架构演进 - SOA…

SPDK块设备

SPDK视角每个App由多个子系统(subsystem)构成&#xff0c;同时每个子系统又包含多个模块(module)&#xff0c;子系统和模块的注入都是可插拔的&#xff0c;通过相关的宏定义声明集成到SPDK组件容器里(其中子系统的注入可通过声明SPDK_SUBSYSTEM_REGISTER&#xff0c;块设备模块…

5G小基站行业市场空间将持续释放 2024年或将迎来建设高峰期

5G小基站行业上游包括硬件资源供应商、软件资源供应商、配套资源供应商&#xff1b;中游主体包括5G小基站设备厂商、5G小基站解决方案服务商&#xff1b;下游则主要是大型写字楼、购物中心、机场等。 数据来源&#xff1a;中国5G小基站市场发展趋势分析与未来前景研究报告&…

弥漫的烟圈-Abaqus涡环仿真与空气大炮

今天简单地讨论一下这个有趣的流体现象-烟圈&#xff0c;并使用Abaqus欧拉分析对它的形成过程进行仿真&#xff0c;揭示其中的力学奥秘。 烟圈 喷气圈的海豚 在流体力学里面&#xff0c;烟圈和水下气圈有个共同的名字&#xff0c;叫做Vortex Ring&#xff0c;即涡环或环形涡流…

腾讯云服务器选购新手教程(新版流程超级详细)

腾讯云服务器选购新手教程(新版流程超级详细)&#xff0c;来详细说下腾讯云服务器购买流程图文详解及购买渠道说明。 腾讯云服务器购买流程 购买腾讯云服务器很简单&#xff0c;首先你需要注册一个腾讯云账号&#xff0c;使用微信或QQ注册即可&#xff0c;很简单。账号注册后&…

git clone 拉取远程仓库

1. git clone 拉取仓库 2. 以 HTTPS 方式拉取仓库 3. 以 SSH 方式拉取仓库 1. git clone 拉取仓库 拉取远程库的默认分支 git clone <repositories> 拉取远程库的指定分支 -b, --branch git clone -b <branch> <repositories> 将远程库拉取到指定目录 git c…

产品销量一直上不去,怎么办,试试这种模式?

裂变营销的本质是以存量带增量&#xff0c;让已有消费者帮你寻找潜在消费者&#xff0c;从而达到快速获客的目的。这种方法成本低、影响持久、效率高&#xff0c;已经成为传统企业转型不可或缺的重要战略&#xff1b;时至今日&#xff0c;许多传统企业&#xff0c;在引流方面碰…

【图像去噪】PM模型图像降噪【含Matlab源码 2107期】

⛄一、PM模型图像降噪简介 为了提高去除噪声和保留细节信息的算法的性能,Peroha等提出以热学中扩散方程式为基础的扩散算法即为PM模型。该模型主要是在经典各向异性扩散方dgi,j,t/dtdiv(d∇g)上提出将其中的扩散系数d用函数控制的扩散系数替代。PM模型为 其中,f(|∇gi,j,t|)是…

ISO 15765-2协议分享(三)—寻址方式详解

文章目录 前言一、Normal addressing二、Extended addressing三、Mixed addressing总结前言 2021年下半年的第一天,愿大家都安好。 对于自己的未来,做一个规划,不要让自己每天沉溺于肤浅信息带来的感官愉悦。 喜欢《沉思录》中一句话: 要学会深思,洞察事物之间的相互转…

轻量级聊天应用VoceChat

本文是应网友 猪猪侠的要求折腾的&#xff1b; 什么是 VoceChat &#xff1f; VoceChat 是一款支持独立部署的个人云社交媒体聊天服务。15MB 的大小可部署在任何的服务器上&#xff0c;部署简单&#xff0c;很少需要维护。前端可以内嵌到自己的网站下&#xff0c;数据完全由用户…

探花交友_第8章_搜附近(新版)

探花交友_第8章_搜附近(新版) 文章目录探花交友_第8章_搜附近(新版)1.1 需求分析需求说明数据库表1.2 探花推荐列表查询接口文档tanhua-modeltanhua-app-server**TanHuaController**TanHuaService配置文件tanhua-dubbo-interfacetanhua-dubbo-mongo1.3 左滑右滑接口文档tanhua-…

2022-前端实现电子签名(web、移动端)通用组件

前端实现电子签名&#xff08;web、移动端&#xff09;通用组件 前言 在现在的时代发展中&#xff0c;从以前的手写签名&#xff0c;逐渐衍生出了电子签名。电子签名和纸质手写签名一样具有法律效应。电子签名目前主要还是在需要个人确认的产品环节和司法类相关的产品上较多。…

可视化大数据分析系统

可视化大数据分析系统有很多&#xff0c;如果系统级都是收费的&#xff0c;如果大家想要了解可视化大数据分析系统&#xff0c;私信我就行。下面聊下5个常用的大数据可视化分析工具。 1、FineReport FineReport是一款纯Java编写的、集数据展示(报表)和数据录入(表单)功能于一…

Linux环境变量配置

在自定义安装软件的时候&#xff0c;经常需要配置环境变量&#xff0c;下面列举出各种对环境变量的配置方法。 下面所有例子的环境说明如下&#xff1a; 系统&#xff1a;Ubuntu 14.0 用户名&#xff1a;uusama 需要配置MySQL环境变量路径&#xff1a;/home/uusama/mysql/bi…

Servlet转发与重定向

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

【设计模式】代理模式——静态动态代理

【设计模式】代理模式——静态&动态代理 文章目录【设计模式】代理模式——静态&动态代理一&#xff1a;代理模式概述二&#xff1a;代理模式结构三&#xff1a;静态代理四&#xff1a;JDK动态代理1&#xff1a;简介2&#xff1a;步骤五&#xff1a;CGLIB动态代理六&am…

Python -- 元组、字典、集合

目录 1.元组的使用 1.1 访问元组 1.2 修改元组 1.3 count,index 1.4 定义只有一个数据的元组 2.字典的基本使用 2.1 字典的增删改查 2.2 字典的遍历 3.集合的使用 4.通用方法 1.元组的使用 Python的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。元组使…