zoukankan      html  css  js  c++  java
  • 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;
        }
    
    }





  • 相关阅读:
    协议详解1——概要
    协议学习之 vamei博客系列 总结
    DDOS介绍
    python基础教程总结15——7 自定义电子公告板
    python基础教程总结15——6 CGI远程编辑
    python基础教程总结15——5 虚拟茶话会
    python基础教程总结15——4 新闻聚合
    python基础教程总结15——3 XML构建网址
    如何在远程桌面的服务器上访问本地磁盘
    C# 如何把dataTable以参数的形式传入 sql 存储过程
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9160049.html
Copyright © 2011-2022 走看看