QT-三色灯状态灯IO状态
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状态相关推荐
- C#之windows桌面软件第七课:(下集)串口工具实现数据校验、用灯反应设备状态
C#之windows桌面软件第七课:(下集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...
- C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态
C#之windows桌面软件第六课:(上集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...
- LEDs状态灯任务(线程)设计(基于RTOS)
我们学习MCU开发,大部分都是面向过程的开发,但实际项目一般要求我们有面向对象(模块化)的方式来开发. 刚学习C语言开发的朋友,应该常常听说面向对象,但实际对于面向对象开发可能还是不太了解. 为了初学 ...
- Linux iostat监测IO状态
Linux iostat监测IO状态 - 一个故事@MySQL DBA Linux iostat监测IO状态 2010-03-1 | 13:13分类:Linux,技术细节 | 标签:Linux ...
- 故障解决:三块300GSAS硬盘 一块硬盘状态灯为红色
故障的发生过程是这样的,HP DL380服务器 三块300GSAS硬盘,磁盘故障导致整个RAID组瘫痪,其中一块硬盘状态灯为红色.数据库存储在D分区,备份存储在E分区.存储故障,造成D分区不可识别,E ...
- Zabbix-3.0.X 监测服务器硬盘IO状态
Zabbix-3.0监测服务器硬盘IO状态 一.环境准备 被监控主机已安装zabbix-agent,且zabbix-server能正常监控到zabbix-agent相关数据. 系统环境: Zabbix ...
- linux 实时监控系统IO状态和IO性能
Snippet:2021-3-5 9:33 linux 实时监控系统IO状态和IO性能 问题概述:linux 实时监控系统IO状态和IO性能 方案细节 bash> iostat -c -k -p ...
- 如何解决zt210打印标签机问题,状态灯和耗材灯都变为红色,打印空白 打印不全 且偏了
问题1,有时 开机出纸一会,状态灯和耗材灯都变为红色,但介质没用完. 问题2,有时状态正常了,但打印只有一半也偏了一点,有时是空白的. 如何解决zt210打印机问题: 1.红灯对标签中间.可解决不断吞 ...
- ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)
ESP8266+DHT11温湿度传感器+LED灯(状态可视化) 接线(继电器与DHT11模块的GND与VCC分别对应接好ESP8266即可,下表只列出信号线接法): 模块 ESP8266 继电器IN ...
最新文章
- 如何实现拼音与汉字的互相转换
- python123子字符串输出_Python--字符串函数方法全解
- html multiply属性,NonCommutativeMultiply
- 用字符串表达式访问JSON数据(java,fastjson)
- 如何看待李开复演讲称早期帮旷视拿了蚂蚁金服大量人脸数据,以及李开复、蚂蚁和旷视的澄清?该如何保护隐私?...
- 【java】java 分支预测 Java处理排序后的数组比没有排序的快
- Vscode linux ubuntu deb 最新下载
- python可以自学编程吗-编程学习第一步,让你20天搞定Python编程
- 黑马程序员——C语言基础 字符串
- sql执行遇到汉字会停止执行吗_(数据)产品经理应该学会的SQL优化和进阶技巧...
- js中定义变量的符号
- MVC模式中Controller控制器为什么是Servlet?怎么理解?
- java调用webservice接口 几种方法
- HAL库学习笔记-10 HAL库外设驱动框架概述
- pytorch 预训练模型
- 重庆人文科技学院计算机学院院长,我校计算机工程学院成立大会圆满闭幕
- 0xff到底是多少(0x是16进制,f对应11111,因此是11111111,也就是2的8次方-1=255)
- 【搞定算法】蓄水池算法
- Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做
- 枪火——古龙之视觉化