一、效果演示
动画演示
二、代码详解
(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)最后别忘了在关闭开关后,停止计时器,并设置初始图标