QT-三色灯状态灯IO状态

  • 一、演示效果
  • 二、关键程序
  • 三、程序链接

一、演示效果

二、关键程序

代码如下:

#include "QSimpleLed.h"#include <QGradient>
#include <QPainter>
#include <QDebug>QSimpleLed::ColorGroup QSimpleLed::smColorPalette[6] {// CUSTOM{ QColor(0, 0, 0), QColor(0, 0, 0), QColor(0, 0, 0), QColor(0, 0, 0) },// RED{ QColor(255, 0, 0), QColor(191, 0, 0), QColor(28, 0, 0), QColor(128, 0, 0) },// GREEN{ QColor(0, 255, 0), QColor(0, 191, 0), QColor(0, 28, 0), QColor(0, 128, 0) },// BLUE{ QColor(0, 0, 255), QColor(0, 0, 191), QColor(0, 0, 28), QColor(0, 0, 128) },// YELLOW{ QColor(255, 255, 0), QColor(191, 191, 0), QColor(28, 28, 0), QColor(128, 128, 0) },// ORANGE{ QColor(255, 165, 0), QColor(255, 113, 1), QColor(20, 8, 5), QColor(99, 39, 24) },
};QSimpleLed::QSimpleLed(QWidget *parent, QSimpleLed::LEDCOLOR color): QAbstractButton(parent), mColor(color)
{setCheckable(true);setMinimumSize(64, 64);
}void QSimpleLed::setColor(LEDCOLOR color)
{mColor = color;
}void QSimpleLed::setStates(QSimpleLed::LEDSTATES states)
{switch (states) {case ON:resetStatus();setChecked(true);mStates = ON;break;case OFF:resetStatus();break;case BLINK:resetStatus();if (!mBlinkTimer) {mBlinkTimer = new QTimer(this);connect(mBlinkTimer, &QTimer::timeout, this, &QSimpleLed::onBlinkTimerTimeout);}mBlinkTimer->setInterval(mInterval);mBlinkTimer->start();mStates = BLINK;break;default:qDebug() << "LED - unknown states!!!";}update();
}void QSimpleLed::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);qreal realSize = qMin(width(), height());QRadialGradient radialGent;//// gradient - 1radialGent = QRadialGradient(QPointF(-500, -500), 1500, QPointF(-500, -500));radialGent.setColorAt(0, QColor(224, 224, 224));radialGent.setColorAt(1, QColor(28, 28, 28));QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);      // 反锯齿painter.translate(width()/2, height()/2);           // 绘点移到控件中心处painter.scale(realSize/1000, realSize/1000);painter.setBrush(QBrush(radialGent));painter.drawEllipse(QPointF(0, 0), 500, 500);//// gradient - 2radialGent = QRadialGradient(QPointF(500, 500), 1500, QPointF(500, 500));radialGent.setColorAt(0, QColor(224, 224, 224));radialGent.setColorAt(1, QColor(28, 28, 28));painter.setBrush(QBrush(radialGent));painter.drawEllipse(QPointF(0, 0), 450, 450);if (isChecked()) {//// gradient - 3radialGent = QRadialGradient(QPointF(-500, -500), 1500, QPointF(-500, -500));radialGent.setColorAt(0, smColorPalette[mColor].on0);radialGent.setColorAt(1, smColorPalette[mColor].on1);} else {//// gradient - 4radialGent = QRadialGradient(QPointF(500, 500), 1500, QPointF(500, 500));radialGent.setColorAt(0, smColorPalette[mColor].off0);radialGent.setColorAt(1, smColorPalette[mColor].off1);}painter.setBrush(QBrush(radialGent));painter.drawEllipse(QPoint(0, 0), 400, 400);
//    float test2 = realSize*0.5;
//    float test15 = realSize*1.5;
//    float test45 = realSize*0.45;
//    float test4 = realSize*0.4;//    //
//    // gradient - 1
//    radialGent = QRadialGradient(QPointF(-test2, -test2)
//                                 , test15
//                                 , QPointF(-test2, -test2));
//    radialGent.setColorAt(0, QColor(224, 224, 224));
//    radialGent.setColorAt(1, QColor(28, 28, 28));//    QPainter painter(this);//    painter.setRenderHint(QPainter::Antialiasing);      // 反锯齿
//    painter.translate(width()/2, height()/2);           // 绘点移到控件中心处
    painter.scale(realSize/1000, realSize/1000);
//    painter.setPen(Qt::NoPen);
//    painter.setBrush(QBrush(radialGent));
//    painter.drawEllipse(QPointF(0, 0), test2, test2);//    //
//    // gradient - 2
//    radialGent = QRadialGradient(QPointF(test2, test2)
//                                 , test15
//                                 , QPointF(test2, test2));
//    radialGent.setColorAt(0, QColor(224, 224, 224));
//    radialGent.setColorAt(1, QColor(28, 28, 28));//    painter.setBrush(QBrush(radialGent));
//    painter.drawEllipse(QPointF(0, 0), test45, test45);//    if (isChecked()) {//        //
//        // gradient - 3
//        radialGent = QRadialGradient(QPointF(-test2, -test2)
//                                     , test15
//                                     , QPointF(-test2, -test2));
//        radialGent.setColorAt(0, mOnColor1);
//        radialGent.setColorAt(1, mOnColor2);//    } else {//        //
//        // gradient - 4
//        radialGent = QRadialGradient(QPointF(test2, test2)
//                                     , test15
//                                     , QPointF(test2, test2));
//        radialGent.setColorAt(0, mOffColor1);
//        radialGent.setColorAt(1, mOffColor2);
//    }//    painter.setBrush(QBrush(radialGent));
//    painter.drawEllipse(QPointF(0, 0), test4, test4);
}void QSimpleLed::resizeEvent(QResizeEvent *event)
{Q_UNUSED(event);update();
}void QSimpleLed::mousePressEvent(QMouseEvent *event)
{Q_UNUSED(event);
}void QSimpleLed::onBlinkTimerTimeout()
{setChecked(!isChecked());
}void QSimpleLed::resetStatus()
{if (mBlinkTimer && mBlinkTimer->isActive()) {mBlinkTimer->stop();}setChecked(false);mStates = OFF;
}

三、程序链接

程序链接
https://download.csdn.net/download/u013083044/85523239

QT-三色灯状态灯IO状态相关推荐

  1. C#之windows桌面软件第七课:(下集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第七课:(下集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  2. C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第六课:(上集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  3. LEDs状态灯任务(线程)设计(基于RTOS)

    我们学习MCU开发,大部分都是面向过程的开发,但实际项目一般要求我们有面向对象(模块化)的方式来开发. 刚学习C语言开发的朋友,应该常常听说面向对象,但实际对于面向对象开发可能还是不太了解. 为了初学 ...

  4. Linux iostat监测IO状态

    Linux iostat监测IO状态 - 一个故事@MySQL DBA Linux iostat监测IO状态 2010-03-1  |  13:13分类:Linux,技术细节  |  标签:Linux ...

  5. 故障解决:三块300GSAS硬盘 一块硬盘状态灯为红色

    故障的发生过程是这样的,HP DL380服务器 三块300GSAS硬盘,磁盘故障导致整个RAID组瘫痪,其中一块硬盘状态灯为红色.数据库存储在D分区,备份存储在E分区.存储故障,造成D分区不可识别,E ...

  6. Zabbix-3.0.X 监测服务器硬盘IO状态

    Zabbix-3.0监测服务器硬盘IO状态 一.环境准备 被监控主机已安装zabbix-agent,且zabbix-server能正常监控到zabbix-agent相关数据. 系统环境: Zabbix ...

  7. linux 实时监控系统IO状态和IO性能

    Snippet:2021-3-5 9:33 linux 实时监控系统IO状态和IO性能 问题概述:linux 实时监控系统IO状态和IO性能 方案细节 bash> iostat -c -k -p ...

  8. 如何解决zt210打印标签机问题,状态灯和耗材灯都变为红色,打印空白 打印不全 且偏了

    问题1,有时 开机出纸一会,状态灯和耗材灯都变为红色,但介质没用完. 问题2,有时状态正常了,但打印只有一半也偏了一点,有时是空白的. 如何解决zt210打印机问题: 1.红灯对标签中间.可解决不断吞 ...

  9. ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)

    ESP8266+DHT11温湿度传感器+LED灯(状态可视化) 接线(继电器与DHT11模块的GND与VCC分别对应接好ESP8266即可,下表只列出信号线接法): 模块 ESP8266 继电器IN ...

最新文章

  1. 如何实现拼音与汉字的互相转换
  2. python123子字符串输出_Python--字符串函数方法全解
  3. html multiply属性,NonCommutativeMultiply
  4. 用字符串表达式访问JSON数据(java,fastjson)
  5. 如何看待李开复演讲称早期帮旷视拿了蚂蚁金服大量人脸数据,以及李开复、蚂蚁和旷视的澄清?该如何保护隐私?...
  6. 【java】java 分支预测 Java处理排序后的数组比没有排序的快
  7. Vscode linux ubuntu deb 最新下载
  8. python可以自学编程吗-编程学习第一步,让你20天搞定Python编程
  9. 黑马程序员——C语言基础 字符串
  10. sql执行遇到汉字会停止执行吗_(数据)产品经理应该学会的SQL优化和进阶技巧...
  11. js中定义变量的符号
  12. MVC模式中Controller控制器为什么是Servlet?怎么理解?
  13. java调用webservice接口 几种方法
  14. HAL库学习笔记-10 HAL库外设驱动框架概述
  15. pytorch 预训练模型
  16. 重庆人文科技学院计算机学院院长,我校计算机工程学院成立大会圆满闭幕
  17. 0xff到底是多少(0x是16进制,f对应11111,因此是11111111,也就是2的8次方-1=255)
  18. 【搞定算法】蓄水池算法
  19. Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做
  20. 枪火——古龙之视觉化

热门文章

  1. python npv 计算公式_PMP知识点总结 -- 净现值(NPV)
  2. ChatGPT的使用学习笔记
  3. 从Google Aquila和RMA谈谈数据中心互联技术变革,NUPA和UMA
  4. 简单带验证码的登陆网站破解
  5. [乱七八糟][转]这不是你想象中的软件产业
  6. 读书笔记16 《傅雷家书》 傅雷傅敏
  7. 1(基于SpringBoot)疫情下的在线办公签到系统-从零构建后端项目基础篇
  8. [投票]你平时晚上几点睡觉?
  9. 可升级的瑞星和卡巴KEY
  10. NO:01是什么意思?