当前位置:   article > 正文

QT制作窗口切换的小程序_qt实现简单的界面设置及点击动态

qt实现简单的界面设置及点击动态

QT制作窗口切换的小程序

前言:本次实验是在三个窗口之间自由切换,窗口中播放gif格式的动态图。

让我们先来看看使用到的主要的函数:

一、播放gif格式动态图的函数

  1. QMovie *movie = new QMovie("../form/1.gif"); // "../form/1.gif"图片路径
  2. movie->start(); //开始播放动态图
  3. ui->label->setMovie(movie); //将图片设置为为动态
  4. ui->label->setScaledContents(true); //尽可能完整的播放整张动图 ,此处要设置为true

二、singnals信号槽的定义

  1. 1)定义信号函数
  2. signals:
  3. void ShowTowForm(); //定义信号函数
  4. 2)发送信号
  5. void threeform::ToTwoForm()
  6. {
  7. emit ShowTowForm(); //通过自定义的信号函数发送信号
  8. this->hide();
  9. }
  10. 3)接收信号
  11. connect(form3,SIGNAL(ShowTowForm()),this,SLOT(ShowThreeRespond())); //接收信号
  12. 参数:
  13. form3:发送信号的类
  14. ShowTowForm:form3类中发送信号的函数
  15. this:接收信号的类
  16. ShowThreeRespond:接收信号后this类中的响应函数

三、隐藏、显示窗口

  1. this->hide(); //隐藏窗口
  2. this->show(); //显示窗口

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

三个头文件分别为:

1、头文件oneform.h

  1. 1 #ifndef ONEFORM_H
  2. 2 #define ONEFORM_H
  3. 3
  4. 4 #include <QWidget>
  5. 5 #include "twoform.h"
  6. 6
  7. 7 namespace Ui {
  8. 8 class oneform;
  9. 9 }
  10. 10
  11. 11 class oneform : public QWidget
  12. 12 {
  13. 13 Q_OBJECT
  14. 14
  15. 15 public:
  16. 16 explicit oneform(QWidget *parent = 0);
  17. 17 ~oneform();
  18. 18 protected slots:
  19. 19 void ToTowForm(); //切换到第二页
  20. 20 void ShowOneRespond(); //接收到第二页发送的信号后响应的函数
  21. 21 private:
  22. 22 Ui::oneform *ui;
  23. 23 void Init();
  24. 24 twoform *form2;
  25. 25 };
  26. 26
  27. 27 #endif // ONEFORM_H

2、头文件towform.h

  1. 1 #ifndef TWOFORM_H
  2. 2 #define TWOFORM_H
  3. 3
  4. 4 #include <QWidget>
  5. 5 #include "threeform.h"
  6. 6
  7. 7 namespace Ui {
  8. 8 class twoform;
  9. 9 }
  10. 10
  11. 11 class twoform : public QWidget
  12. 12 {
  13. 13 Q_OBJECT
  14. 14
  15. 15 public:
  16. 16 explicit twoform(QWidget *parent = 0);
  17. 17 ~twoform();
  18. 18
  19. 19
  20. 20 protected slots:
  21. 21 void ToOneForm(); //发送信号到oneform
  22. 22 void ToThreeFrom(); //跳转到threeform
  23. 23 void ShowThreeRespond(); //接收到threeform发送过来的自定义信号响应槽函数
  24. 24
  25. 25 signals:
  26. 26 void ShowOneForm(); //自定义信号函数,发送信号给oneform
  27. 27 private:
  28. 28 Ui::twoform *ui;
  29. 29 void Init(); //初始化界面
  30. 30 threeform *form3;
  31. 31
  32. 32 };
  33. 33
  34. 34 #endif // TWOFORM_H

3、头文件threeform.h

  1. 1 #ifndef THREEFORM_H
  2. 2 #define THREEFORM_H
  3. 3
  4. 4 #include <QWidget>
  5. 5
  6. 6 namespace Ui {
  7. 7 class threeform;
  8. 8 }
  9. 9
  10. 10 class threeform : public QWidget
  11. 11 {
  12. 12 Q_OBJECT
  13. 13
  14. 14 public:
  15. 15 explicit threeform(QWidget *parent = 0);
  16. 16 ~threeform();
  17. 17 protected slots:
  18. 18 void ToTwoForm(); //切换到第二页
  19. 19 signals:
  20. 20 void ShowTowForm(); //发送信号
  21. 21 private:
  22. 22 Ui::threeform *ui;
  23. 23 void Init();
  24. 24 };
  25. 25
  26. 26 #endif // THREEFORM_H

三个源文件分别为:

1、源文件oneform.cpp

  1. 1 #include "oneform.h"
  2. 2 #include "ui_oneform.h"
  3. 3 #include <QMovie>
  4. 4
  5. 5 oneform::oneform(QWidget *parent) :
  6. 6 QWidget(parent),
  7. 7 ui(new Ui::oneform)
  8. 8 {
  9. 9 ui->setupUi(this);
  10. 10 Init();
  11. 11 }
  12. 12
  13. 13 oneform::~oneform()
  14. 14 {
  15. 15 delete ui;
  16. 16 }
  17. 17
  18. 18 void oneform::Init()
  19. 19 {
  20. 20 QMovie *movie = new QMovie("../form/1.gif");
  21. 21 movie->start(); //开始播放动态图
  22. 22 ui->label->setMovie(movie); //将图片设置为为动态
  23. 23 ui->label->setScaledContents(true); //尽可能完整的播放整张动图
  24. 24 form2 = new twoform;
  25. 25 connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToTowForm()));//点击按钮响应下一页槽函数
  26. 26 connect(form2,SIGNAL(ShowOneForm()),this,SLOT(ShowOneRespond()));//接收form2发送的信号
  27. 27 }
  28. 28
  29. 29 void oneform::ToTowForm()
  30. 30 {
  31. 31 this->hide();//隐藏本页
  32. 32 form2->show();//显示第二页
  33. 33 }
  34. 34
  35. 35 void oneform::ShowOneRespond() //接收到form2发送的信号后响应的函数
  36. 36 {
  37. 37 this->show();//显示本页
  38. 38 }

2、源文件twoform.cpp

  1. 1 #include "twoform.h"
  2. 2 #include "ui_twoform.h"
  3. 3 #include <QMovie>
  4. 4 #include <QDebug>
  5. 5
  6. 6 twoform::twoform(QWidget *parent) :
  7. 7 QWidget(parent),
  8. 8 ui(new Ui::twoform)
  9. 9 {
  10. 10 ui->setupUi(this);
  11. 11 Init();
  12. 12 }
  13. 13
  14. 14 twoform::~twoform()
  15. 15 {
  16. 16 delete ui;
  17. 17 }
  18. 18
  19. 19 void twoform::Init()
  20. 20 {
  21. 21 QMovie *movie = new QMovie("../form/2.gif");
  22. 22 movie->start();
  23. 23 ui->label->setMovie(movie);
  24. 24 ui->label->setScaledContents(true);
  25. 25 form3 = new threeform();
  26. 26 connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToOneForm()));
  27. 27 connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(ToThreeFrom()));
  28. 28 connect(form3,SIGNAL(ShowTowForm()),this,SLOT(ShowThreeRespond())); //接收form3发送的信号
  29. 29
  30. 30 }
  31. 31
  32. 32 void twoform::ToOneForm()
  33. 33 {
  34. 34 emit ShowOneForm();//发送信号
  35. 35 this->hide();
  36. 36
  37. 37 }
  38. 38
  39. 39 void twoform::ToThreeFrom()
  40. 40 {
  41. 41 this->hide();
  42. 42 form3->show();
  43. 43
  44. 44 }
  45. 45
  46. 46 void twoform::ShowThreeRespond()
  47. 47 {
  48. 48 this->show();
  49. 49 qDebug()<<"hello world";
  50. 50 }

3、源文件threeform.cpp

  1. 1 #include "threeform.h"
  2. 2 #include "ui_threeform.h"
  3. 3 #include <QMovie>
  4. 4
  5. 5 threeform::threeform(QWidget *parent) :
  6. 6 QWidget(parent),
  7. 7 ui(new Ui::threeform)
  8. 8 {
  9. 9 ui->setupUi(this);
  10. 10 Init();
  11. 11 }
  12. 12
  13. 13 threeform::~threeform()
  14. 14 {
  15. 15 delete ui;
  16. 16 }
  17. 17
  18. 18 void threeform::Init()
  19. 19 {
  20. 20 QMovie *movie = new QMovie("../form/3.gif");
  21. 21 movie->start();
  22. 22 ui->label_2->setMovie(movie);
  23. 23 ui->label_2->setScaledContents(true);
  24. 24 connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(ToTwoForm()));//绑定切换到第二页的槽函数
  25. 25 }
  26. 26
  27. 27 void threeform::ToTwoForm()
  28. 28 {
  29. 29 emit ShowTowForm();//发送信号
  30. 30 this->hide();
  31. 31 }

三个界面文件分别为:

1、oneform的界面文件

2、twoform的界面文件

3、threeform的界面文件

最终效果是这样

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/81569
推荐阅读
相关标签
  

闽ICP备14008679号