Qt实现一个刷新效果按钮
Qt 实现 一个 效果 按钮 刷新
2023-09-14 09:05:10 时间
下面是一个使用Qt实现的刷新效果按钮示例:
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QIcon>
#include <QTimer>
class RefreshButton : public QPushButton {
Q_OBJECT
public:
RefreshButton(QWidget *parent = nullptr) : QPushButton(parent) {
// 设置按钮样式和图标
setStyleSheet("QPushButton { background-color: white; border-radius: 15px; }"
"QPushButton:hover { background-color: #e6e6e6; }");
setIcon(QIcon(":/refresh.png"));
setIconSize(QSize(30, 30));
// 创建定时器
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
// 点击按钮开始动画
connect(this, &QPushButton::clicked, [this]() {
timer->start(50);
});
}
private slots:
void onTimeout() {
// 获取按钮颜色
QColor color = palette().color(QPalette::Button);
// 修改颜色的亮度值
int lightness = color.lightness();
if (lightness > 95)
direction = -1;
else if (lightness < 80)
direction = 1;
lightness += 5 * direction;
// 填充新的颜色
QPalette pal = palette();
pal.setColor(QPalette::Button, QColor::fromHsl(color.hue(), color.saturation(), lightness));
setPalette(pal);
}
private:
QTimer *timer;
int direction = 1;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建主窗口和按钮
QWidget mainWidget;
RefreshButton refreshButton(&mainWidget);
refreshButton.setGeometry(50, 50, 60, 60);
mainWidget.show();
return app.exec();
}
#include "main.moc"
在上述示例中,我们创建了一个继承自QPushButton的RefreshButton类。在该类中,我们重载了onTimeout()函数,该函数会定时修改按钮颜色的亮度值,从而实现刷新效果。同时,我们还通过创建定时器来触发onTimeout()函数,从而实现动画效果。
使用时,只需要在主窗口中创建RefreshButton对象并显示即可。在点击按钮时,会开始执行刷新动画。
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,C++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- [Qt教程] 第12篇 2D绘图(二)渐变填充
- Qt-Qt之grabWindow实现截图功能
- Qt-Qt使用QWebsocket实现服务端和客户端通信
- Qt-QPropertyAnimation实现的动画按钮
- 【C/C++学院】0817-递归汉诺塔 双层递归 /CPP结构体 /面向过程与面向对象的编程模式/类的常识共用体实现一个类的特征/QT应用于类以及类的常识
- Qt音视频开发27-Onvif设备搜索
- Qt交叉编译整理的几点说明
- Qt如何实现秒表项目
- Qt如何实现邮件转发
- Qt利用ffmpeg实现音视频同步
- Qt信号与槽自动关联机制
- Linux上从零搭建QT开发环境
- Qt之实现工具箱界面程序
- Qt基于FFmpeg解码本地视频生成RGB数据
- 【Qt】实现按钮透明的动画效果
- Qt之飞机大战
- Qt程序怎么实现选中ListWidget中的某一行为默认选中
- Qt实现截图保存功能
- 嵌入式Linux开发,Qt开发界面中,不能满屏显示,四周无法使用,不能从屏有右上角(0,0坐标)开始显示