qt 弹出标签自动渐渐消失

本文介绍了一种在Qt中自定义Label的方法,该Label能在指定时间后自动淡出并消失。通过设置窗口标志、透明背景及自定义绘制,结合定时器和属性动画,实现了平滑的淡出效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

在这里插入图片描述
https://github.com/Greedysky/TTKWidgetTools
研究网上别人代码,看到一个可能以后会用的功能
弹出一个label 过段时间自动淡淡退出

先自定义一个label

//  设置背景
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_QuitOnClose);
setAttribute(Qt::WA_DeleteOnClose);
//设置文字和大小
m_font.setPointSize(size);
QFontMetrics metrics = QFontMetrics(m_font);
setFixedSize(metrics.width(text) + m_margin.x(),
metrics.height() + m_margin.y());
QLabel::setText(text);
//paint
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(Qt::NoPen);
painter.setBrush(QColor(0, 0, 0, 175));
painter.drawRoundRect(rect(), 6, 6);

painter.setPen(QColor(255, 255, 255));
painter.drawText(rect(), Qt::AlignCenter, text());
painter.end();

初始化函数绑定结束事件
结束用一个动画实现渐渐退出的效果

//绑定
connect(&m_timer, SIGNAL(timeout()), SLOT(closeAnimation()));
 m_timer.setInterval(1000);
 m_timer.start();

//结束槽函数
void   closeAnimation() {
m_timer.stop();
QPropertyAnimation *animation =
new QPropertyAnimation(this, "windowOpacity", this);
animation->setDuration(1000);
animation->setStartValue(1);
animation->setEndValue(0);
animation->start();
connect(animation, SIGNAL(finished()), SLOT(close()));
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beyond欣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值