Qt 控件渐变隐藏消失
Qt 控件 隐藏 消失 渐变
2023-09-14 09:07:01 时间
在 Qt 开发中,经常会设置某些控件透明的透明度,比如设置QLabel字体渐变隐藏,设置某个按钮渐变消失等等,这在消息提示框中会常用到,显示一定时间后让控件有一个动画逐渐消失的过程,其实原理很简单,就是设置控件的透明度,直到透明度为0后再将控件设置为隐藏即可。动画的过程可以用两种方式来实现,第一是通过定时器,不断的设置控件的透明度,第二是通过QPropertyAnimation来实现,当然,后者会更简单。那么该如何设置控件透明度呢,这里需要用到QGraphicsOpacityEffect类。
正文
首先来看看效果图
当然,还可以将 QLabel 换成其他控件,比如 QPushButton等等。
来看源码:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
m_pGraphicsOpacityEffect = new QGraphicsOpacityEffect(ui->label);
m_pGraphicsOpacityEffect->setOpacity(1);
ui->label->setGraphicsEffect(m_pGraphicsOpacityEffect);
m_pNameAnimation = new QPropertyAnimation(m_pGraphicsOpacityEffect,"opacity",this);
m_pNameAnimation->setEasingCurve(QEasingCurve::Linear);
m_pNameAnimation->setDuration(2500);
}
Widget::~Widget()
{
delete ui;
delete m_pGraphicsOpacityEffect;
delete m_pNameAnimation;
}
void Widget::on_pushButton_clicked()
{
m_pNameAnimation->setStartValue(1);
m_pNameAnimation->setEndValue(0);
m_pNameAnimation->start(QAbstractAnimation::KeepWhenStopped);
}
代码很简单,就是QGraphicsOpacityEffect + QPropertyAnimation来实现想要的效果。
以上是设置控件的透明度,如果想要设置窗口透明度,需要用到 QWidget 的函数setWindowOpacity来实现,原理和上面一样,也可以通过QPropertyAnimation来实现动画效果。这里就不再讲述。
相关文章
- QT-Qt5在使用showFullScreen窗口全屏状态下,ComboBox的下拉框无法显示,Tabel控件提示无法显示,输入法后选框无法显示问题?
- Qt编写自定义控件69-代码行数统计
- Qt编写自定义控件42-开关按钮
- Qt编写自定义控件35-GIF录屏控件
- Qt编写自定义控件30-颜色多态按钮
- Qt编写自定义控件9-导航按钮控件
- Qt编写自定义控件65-光晕日历
- Qt编写安防视频监控系统55-布局方案
- Qt开源作品35-秘钥生成器
- Qt使用相对路径读取.txt文件
- C++Qt开发——整体框架
- Qt控件-QListWidget
- Qt学习之Qt控件的介绍
- C++Qt开发——阻止系统休眠方法
- C++Qt开发——动画框架、状态机框架
- 第18篇 基础 (十八)Qt 创建一个QtDesinger第三方控件
- 8、QT基础——常用控件
- qt实现控件阴影效果
- QT之父子控件相对位置转换
- Qt QPushbutton实现移动的效果
- Qt 访问网络
- Qt代码布局中添加弹簧和删除弹簧
- Qt开发,编译报错:Cannot find file: xxx.pro.
- Qt编写控件属性设计器2-拖曳控件