QT<6>Qt不使用库或QML的情况下实现动态图标

一、效果演示

动画演示

二、代码详解

(1)首先准备两张图标,三张更好,可以使用画图工具擦除

(2)在.h文件中定义一个定时器和变量

    QTimer *fantimer;
    int fancurrentIconIndex = 1;

(3)在.cpp文件中,点击按钮开始定时器,定时器发出的timeout信号连接到更换图标槽函数中,并设置每0.5秒计时一次

    fantimer = new QTimer(this);
    fantimer->setInterval(50);
    QObject::connect(fantimer, SIGNAL(timeout()), this, SLOT(changefanIcon()));
    QObject::connect(this, SIGNAL(fanclicked()), fantimer, SLOT(start()));

(4)在更换图标槽函数中实现切换图标

void M0Wig::changefanIcon()
{
    if(ui->kgBtn_2->isChecked())
    {
        // 根据当前图标索引切换至下一张图标
        if (fancurrentIconIndex == 1) {
            QPixmap pixmap("://rec/fan1.png");
            QSize labelsize = ui->fslabel->size();
            QPixmap Pixmap = pixmap.scaled(labelsize,Qt::KeepAspectRatio);
            ui->fslabel->setPixmap(Pixmap);
            fancurrentIconIndex = 2;
        } else if (fancurrentIconIndex == 2) {
            QPixmap pixmap("://rec/fan.png");
            QSize labelsize = ui->fslabel->size();
            QPixmap Pixmap = pixmap.scaled(labelsize,Qt::KeepAspectRatio);
            ui->fslabel->setPixmap(Pixmap);
            fancurrentIconIndex = 1;
        }
    }
}

(5)最后别忘了在关闭开关后,停止计时器,并设置初始图标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值