Qt之等待提示框(QMovie播放gif图片,等待文字变化等)
在实现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图片,等待文字变化等)相关推荐
- Qt 之等待提示框(QPropertyAnimation)
简述 之前分享过QLabel可以通过QMovie播放gif图片,可以实现等待提示框,今天主要使用动画QPropertyAnimation来进行实现! 数据加载的时候,往往都需要后台线程进行数据请求,而 ...
- Qt实现等待提示框(图片和movie实现)
Qt实现等待提示框(图片和movie实现) 上一篇文章说了怎样用代码实现等待提示框,这篇文章来说一下怎么用切换图片或者播放gif图片来实现. 1.用图片快速切换实现 创建工程.(我在上一篇的基础上做, ...
- 封装jquery的ajax,便于加载等待提示框
先贴上代码. 传入4给参数,保证post,get都能执行,和普通的ajax区别在于添加了设置的timeout. 并在每一次的发送接收请求后执行dialog()方法. function AjaxRequ ...
- Echarts 问题解决 —— 设置图例、提示框上下角标;坐标轴文字过多显示不全、文字竖直一列显示、让坐标轴类目隔一个换一行;
目录 1.设置图例.提示框上下角标 1.1 修改弹框内容的方法 1.2 修改图例文字的方法 1.3 在 rich 中单独设置角标 1.4 实战 2.坐标轴文字过多显示不全 2.1 方法一:将 坐标轴上 ...
- android studio 好用的加载等待提示框 LoadingDialog
转载 https://blog.csdn.net/a214024475/article/details/53086180 使用方法与效果图 展示一个loading dialog: new Loadin ...
- Qt for Android 调用android原生接口分享图片或文字
在用Qt开发android应用的时候,有一个需求是通过调用android原生接口去实现图片分享功能,原理很简单,首先在java文件中用android接口封装一个分享功能的方法,然后在C++中调用QAn ...
- QT 自定义加载等待(Loading)提示框
QT自定义加载等待提示框 一.效果展示 二.源代码 #ifndef LOADINGDIALOG_H #define LOADINGDIALOG_H #include <QMovie> #i ...
- qml 自定义消息框_Qt qml 自定义消息提示框
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a844651990/article/d ...
- Dev 等待提示 WaitDialogForm 升级版
本文转载:http://www.cnblogs.com/VincentLuo/archive/2011/12/24/2298916.html 一.Dev的等待提示框 ...
最新文章
- 基于fpga的数码管动态扫描电路设计_【至简设计案例系列】基于FPGA的密码锁设计(altera版)...
- Cygwin PATH
- 学习笔记 线程异步请求过程
- linux下aio异步读写详解与实例
- linux u 驱动程序,在uClinux中增加自己的设备驱动程序
- asp.net url传值,弹窗
- 第十五天 图【下】(大结局)
- java 双线程交替,Java 创建两个线程,和主线程交替运行。
- 蓝桥杯 ALGO-25 算法训练 Car的旅行路线
- python字符串驻留机制_Python中的字符串驻留
- 完全公平调度 c语言,使用完全公平调度程序(CFS)进行多任务处理
- Android 文件下载三种基本方式
- js加载flv格式视频
- 免费的生成GIF和截屏的PC端小工具
- 汇率兑换Python
- 计算机蓝牙功能,笔记本电脑蓝牙在哪里?笔记本怎么打开蓝牙功能Bluetooth
- 1.2. Linear and Quadratic Discriminant Analysis(线性判别和二次判别分析)(一)
- 历史上的一些重大芯片诞生回顾-推动行业发展
- Firefox数据采集插件大全
- 血泪史: k8s Initial timeout of 40s passed.