Qt Qwdget 汽车仪表知识点拆解5 标题栏图标闪烁

举报
DreamLife 发表于 2022/04/15 00:17:12 2022/04/15
【摘要】 先贴上效果图,注意,没有写逻辑,都是乱动的 看下最上面的部分,有一些仪表图标在闪烁,如果一个一个写,也是可以实现的,不过感觉要累死的节奏 这里我写了一个我自己的Label,完了把把这些QLabel提升为自己的 在我自己的Label中实现了图标的1Hz闪烁 上实现代码 .H文件中内容   #ifndef MQL...

先贴上效果图,注意,没有写逻辑,都是乱动的

看下最上面的部分,有一些仪表图标在闪烁,如果一个一个写,也是可以实现的,不过感觉要累死的节奏

这里我写了一个我自己的Label,完了把把这些QLabel提升为自己的

在我自己的Label中实现了图标的1Hz闪烁

上实现代码

.H文件中内容

 

#ifndef MQLABEL_H
#define MQLABEL_H

#include <QObject>
#include <QLabel>
#include <QTimer>
class MQlabel : public QLabel
{
    Q_OBJECT
public:
    explicit MQlabel(QWidget *parent = 0);

    void glitter(bool temp = false);
signals:

private slots:
    void timerout_glitter();

private:
    QTimer* timer;
};

#endif // MQLABEL_H

.CPP文件中内容

 

 

#include "mqlabel.h"

MQlabel::MQlabel(QWidget *parent) : QLabel(parent)
{
    timer = new QTimer();
    connect(timer,SIGNAL(timeout()),this,SLOT(timerout_glitter()));
}

void MQlabel::glitter(bool temp)
{
    if(temp)
    {
        timer->start(1000);
    }
    else
    {
        timer->stop();
    }
}

void MQlabel::timerout_glitter()
{
    if(this->isHidden())
    {
        this->show();
    }
    else
    {
        this->hide();
    }
}

这样,需要那个label闪烁的时候,就调用那个label的闪烁函数就好了

 

我在主程序中写了一个随机

 

oid Widget::slot_timerout_titlebar_glitter()
{
    int temp = rand()%7;
    switch (temp)
    {
    case 0:
        ui->label_titlebar_1->glitter(true);
        break;
    case 1:
        ui->label_titlebar_2->glitter(true);
        break;
    case 2:
        ui->label_titlebar_3->glitter(true);
        break;
    case 3:
        ui->label_titlebar_4->glitter(true);
        break;
    case 4:
        ui->label_titlebar_5->glitter(true);
        break;
    case 5:
        ui->label_titlebar_6->glitter(true);
        break;
    case 6:
        ui->label_titlebar_7->glitter(true);
        break;
    default:
        break;
    }
    int temp2 = rand()%7;
    switch (temp2)
    {
    case 0:
        ui->label_titlebar_1->glitter(false);
        break;
    case 1:
        ui->label_titlebar_2->glitter(false);
        break;
    case 2:
        ui->label_titlebar_3->glitter(false);
        break;
    case 3:
        ui->label_titlebar_4->glitter(false);
        break;
    case 4:
        ui->label_titlebar_5->glitter(false);
        break;
    case 5:
        ui->label_titlebar_6->glitter(false);
        break;
    case 6:
        ui->label_titlebar_7->glitter(false);
        break;
    default:
        break;
    }

}


 

 

 

 

 

 

 

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/54139872

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。