zl程序教程

您现在的位置是:首页 >  工具

当前栏目

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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓