博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT制作窗口切换的小程序
阅读量:7287 次
发布时间:2019-06-30

本文共 5005 字,大约阅读时间需要 16 分钟。

前言:本次实验是在三个窗口之间自由切换,窗口中播放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 
5 #include "twoform.h" 6 7 namespace Ui { 8 class oneform; 9 }10 11 class oneform : public QWidget12 {13 Q_OBJECT14 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 
5 #include "threeform.h" 6 7 namespace Ui { 8 class twoform; 9 }10 11 class twoform : public QWidget12 {13 Q_OBJECT14 15 public:16 explicit twoform(QWidget *parent = 0);17 ~twoform();18 19 20 protected slots:21 void ToOneForm(); //发送信号到oneform22 void ToThreeFrom(); //跳转到threeform23 void ShowThreeRespond(); //接收到threeform发送过来的自定义信号响应槽函数24 25 signals:26 void ShowOneForm(); //自定义信号函数,发送信号给oneform27 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 
5 6 namespace Ui { 7 class threeform; 8 } 9 10 class threeform : public QWidget11 {12 Q_OBJECT13 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 
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 
4 #include
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 
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

你可能感兴趣的文章
如何电脑上怎样查看微信聊天记录
查看>>
Thrift 基础架构
查看>>
many-to-many
查看>>
java中的多态
查看>>
Python 函数式编程--装饰器
查看>>
11月28号
查看>>
DAS、NAS、SAN、iSCSI 存储方案概述
查看>>
为VMware esxi主机配置系统日志记录
查看>>
给批量用户设磁盘配额
查看>>
Docker常见问题总结(持续更新)
查看>>
5-6单元练习
查看>>
以普通用户启动的Vim如何保存需要root权限的文件
查看>>
客户端和浏览器都不能连接SVN服务器
查看>>
计划任务
查看>>
华为交换机的命令行
查看>>
限制你的指令只能通过特定的方式来调用
查看>>
男神的补习
查看>>
while数字死循环
查看>>
备份架构——三种基本备份拓扑
查看>>
关于visual assist x插件不能用的解决方案
查看>>