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


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


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

    这里我写了一个我自己的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;
        }
    
    }





  • 相关阅读:
    Idea中SpringBoot热部署搭建
    Redis 集群搭建
    centos7 vsftp搭建
    Centos 7 安装jdk
    Centos7 安装nginx
    Xshell 连接Linux
    python 的mysql 操作
    NIO/BIO
    java基础-3
    java基础-2
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9160049.html
Copyright © 2020-2023  润新知