在实现Qt界面的时候,往往需要进行一些诸如提示框的东东,如何实现、如何才能做到最美观又最易用成了主要考虑的问题,在设计提示框的问题上Qt自带的QMessageBox很强大而且很好用,但是若追求美观则有有点黯然失色,所以很多时候我们都必须自定义提示框等等的东西!现在主要介绍等待提示框。。。

在很多网页或者其他界面中经常可以看到各种各样的等待框,Qt如何实现自己的等待框呢?很easy。。。在查阅一些资料之后,通过一些思路转化,可以实现自己想要的任何效果(当然,符合实际情况的哦)。

如图:

这个功能如何实现呢?很简单,利用对QDialog(模态、无模自己选择)实现无边框并且背景透明,在其上添加QLabel并设置QMovie对gif图片进行播放即可。。。很简单吧!

直接看代码:

LoadingDialog::LoadingDialog(QWidget *parent)
 : QDialog(parent)
{
   this->setFixedSize(100, 100);
   int width = this->width();

//设置透明度
   this->setWindowOpacity(0.8);

//设置背景色为淡蓝色
   this->setStyleSheet("background-color: rgb(55, 135, 215);");

//取消对话框标题
   this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);

label = new QLabel(this);

label->setStyleSheet("background-color: transparent;");
   tip_label->setStyleSheet("color: white; background-color: transparent;");
   label->setGeometry(30, 15, 40, 40);
   movie = new QMovie(":/icon/loading");
   label->setScaledContents(true);
   label->setMovie(movie);

movie->start();
}

效果如下所示:
                    

图片一               图片二

先解释一下代码:主要是设置背景色(淡蓝),并设置无边框,圆角边框不解介绍(博客里有专门讲解),然后添加QLabel并进行QMovie对gif图片的播放。

注意:其实如果比较细心的完全可以注意到图片一锯齿比较严重,而二相反,虽然播放了loading图片,但是如果背景不为白色或者透明色,则会出现比较严重的锯齿,怎么解决呢?

方法:生成gif图片的时候,设置锯齿边框跟等待框背景色相同(这里我的是淡蓝色)。

对比图片:

              

图片三              图片四

仔细观察,图片三在背景为淡蓝色的时候不会出现锯齿(对应图片二),则图片四会。然而图片四在背景为白色或者透明的时候不会出现锯齿(锯齿是有的,但是肉眼基本是不可见的)。

关于生成gif的方法可以提供一个网站,基本是可以满足需求的。http://preloaders.net/

再新添加一个功能,在loading图标底下添加提示信息可以动态进行更改(waiting.  waiting.. waiting...)等。

效果如图:

基本思路:在loading下添加一个标签用于显示提示信息,利用定时器实现文字的切换。

index = 0;
 timer = new QTimer();  
 connect(timer, SIGNAL(timeout()), this, SLOT(changeText()));

void LoadingDialog::translateLanguage()
{
 tip_label->setText(tr("waiting"));
 info = tip_label->text();
}

void LoadingDialog::startLoading()
{
   movie->start();
   timer->start(500);
   this->exec();
}

void LoadingDialog::setHidden() 
{
   index = 0;
   timer->stop();
   movie->stop();
   this->accept();
}

void LoadingDialog::changeText()
{
   index++;
   QString signal;
   if(index == 1)
   {
      signal = QString(".");
   }
   else if(index == 2)
   {
     signal = QString("..");
   }
   else
   {
     signal = QString("...");
     index = 0;
   }
 
   QString tip_info = info + signal;
   tip_label->setText(tip_info);
}

Qt之等待提示框(QMovie播放gif图片,等待文字变化等)相关推荐

  1. Qt 之等待提示框(QPropertyAnimation)

    简述 之前分享过QLabel可以通过QMovie播放gif图片,可以实现等待提示框,今天主要使用动画QPropertyAnimation来进行实现! 数据加载的时候,往往都需要后台线程进行数据请求,而 ...

  2. Qt实现等待提示框(图片和movie实现)

    Qt实现等待提示框(图片和movie实现) 上一篇文章说了怎样用代码实现等待提示框,这篇文章来说一下怎么用切换图片或者播放gif图片来实现. 1.用图片快速切换实现 创建工程.(我在上一篇的基础上做, ...

  3. 封装jquery的ajax,便于加载等待提示框

    先贴上代码. 传入4给参数,保证post,get都能执行,和普通的ajax区别在于添加了设置的timeout. 并在每一次的发送接收请求后执行dialog()方法. function AjaxRequ ...

  4. Echarts 问题解决 —— 设置图例、提示框上下角标;坐标轴文字过多显示不全、文字竖直一列显示、让坐标轴类目隔一个换一行;

    目录 1.设置图例.提示框上下角标 1.1 修改弹框内容的方法 1.2 修改图例文字的方法 1.3 在 rich 中单独设置角标 1.4 实战 2.坐标轴文字过多显示不全 2.1 方法一:将 坐标轴上 ...

  5. android studio 好用的加载等待提示框 LoadingDialog

    转载 https://blog.csdn.net/a214024475/article/details/53086180 使用方法与效果图 展示一个loading dialog: new Loadin ...

  6. Qt for Android 调用android原生接口分享图片或文字

    在用Qt开发android应用的时候,有一个需求是通过调用android原生接口去实现图片分享功能,原理很简单,首先在java文件中用android接口封装一个分享功能的方法,然后在C++中调用QAn ...

  7. QT 自定义加载等待(Loading)提示框

    QT自定义加载等待提示框 一.效果展示 二.源代码 #ifndef LOADINGDIALOG_H #define LOADINGDIALOG_H #include <QMovie> #i ...

  8. qml 自定义消息框_Qt qml 自定义消息提示框

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a844651990/article/d ...

  9. Dev 等待提示 WaitDialogForm 升级版

    本文转载:http://www.cnblogs.com/VincentLuo/archive/2011/12/24/2298916.html   一.Dev的等待提示框                 ...

最新文章

  1. 基于fpga的数码管动态扫描电路设计_【至简设计案例系列】基于FPGA的密码锁设计(altera版)...
  2. Cygwin PATH
  3. 学习笔记 线程异步请求过程
  4. linux下aio异步读写详解与实例
  5. linux u 驱动程序,在uClinux中增加自己的设备驱动程序
  6. asp.net url传值,弹窗
  7. 第十五天 图【下】(大结局)
  8. java 双线程交替,Java 创建两个线程,和主线程交替运行。
  9. 蓝桥杯 ALGO-25 算法训练 Car的旅行路线
  10. python字符串驻留机制_Python中的字符串驻留
  11. 完全公平调度 c语言,使用完全公平调度程序(CFS)进行多任务处理
  12. Android 文件下载三种基本方式
  13. js加载flv格式视频
  14. 免费的生成GIF和截屏的PC端小工具
  15. 汇率兑换Python
  16. 计算机蓝牙功能,笔记本电脑蓝牙在哪里?笔记本怎么打开蓝牙功能Bluetooth
  17. 1.2. Linear and Quadratic Discriminant Analysis(线性判别和二次判别分析)(一)
  18. 历史上的一些重大芯片诞生回顾-推动行业发展
  19. Firefox数据采集插件大全
  20. 血泪史: k8s Initial timeout of 40s passed.

热门文章

  1. Iaas-cloudstack概念
  2. 数组某项抽离 + 数组去重
  3. 测试绘画小软件,绘画中的比例怎么测量?试试用辅助工具
  4. 猎豹MFC--画刷CBrush WM_CTLCOLOR
  5. 表格打印技巧(超级表格也可以打印哦~)
  6. 【Linux】常用命令,快来收藏吧
  7. java获取微信小程序二维码图片并保存到本地
  8. Java语言基础大合集!让兴趣助你更好的学习,赢得未来江湖
  9. 【翻译】使用Sencha Ext JS 6打造通用应用程序
  10. linux配置邮件客户端