首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

QT自定义指示灯(可闪烁、可移动)

移动开发 12.6KB 40 需要积分: 1
立即下载

资源介绍:

QT实现指示灯控件。一般有2种形式:1、使用QPixmap绘制指示灯;2、在paintEvent中使用QPainter来绘制。本示例对这两种形式做了封装,实现了两种不同的指示灯。都可闪烁、可移动。
#include "roundlamp.h" RoundLamp::RoundLamp(QWidget *parent) : Lamp(parent) { setFixedSize(50,50); m_onColor=QColor("green"); m_offColor=QColor(125,125,125); setTickTime(m_tickTime); } RoundLamp::~RoundLamp() { } void RoundLamp::upFrameOut(QPainter *p,int r) { p->save(); QLinearGradient gradient(0,-r,0,r); gradient.setColorAt(1,QColor(166,166,166)); gradient.setColorAt(0,QColor(255,255,255)); gradient.setSpread(QGradient::PadSpread); p->setBrush(gradient); p->drawEllipse(-r,-r,2*r,2*r); p->restore(); update(); } void RoundLamp::upFrameIn(QPainter *p, int r) { p->save(); QLinearGradient gradient(0,-r,0,r); gradient.setColorAt(0,QColor(166,166,166)); gradient.setColorAt(1,QColor(255,255,255)); gradient.setSpread(QGradient::PadSpread); p->setBrush(gradient); p->drawEllipse(-r,-r,2*r,2*r); p->restore(); update(); } void RoundLamp::upLampColor(QPainter *p,int r) { p->save(); if(m_state) { if(m_canTick) { if(m_tickState) p->setBrush(m_onColor); else p->setBrush(m_offColor); } else p->setBrush(m_onColor); } else p->setBrush(m_offColor); p->drawEllipse(-r,-r,2*r,2*r); p->restore(); update(); } void RoundLamp::setTickTime(int tickTime) { m_tickTimer.setInterval(tickTime); connect(&m_tickTimer,&QTimer::timeout,this,[this]{ if(m_tickState) m_tickState=false; else m_tickState=true; }); } void RoundLamp::paintEvent(QPaintEvent *event) { Q_UNUSED(event); int width=this->width(); int height=this->height(); int side=qMin(width,height); QPainter p(this); p.translate(width/2,height/2); p.scale(side/200.0,side/200.0); p.setPen(Qt::NoPen); if(m_canTick&&(!m_tickTimer.isActive())) m_tickTimer.start(m_tickTime); else if(!m_canTick&&m_tickTimer.isActive()) m_tickTimer.stop(); upFrameOut(&p,99); upFrameIn(&p,90); upLampColor(&p,80); upText(&p); } void RoundLamp::setOnColor(QColor onColor) { m_onColor = onColor; update(); }

资源文件列表:

pilot_lamp_Demo.zip 大约有15个文件
  1. pilot_lamp_Demo/
  2. pilot_lamp_Demo/imagelamp.cpp 1.43KB
  3. pilot_lamp_Demo/imagelamp.h 454B
  4. pilot_lamp_Demo/lamp.cpp 1.96KB
  5. pilot_lamp_Demo/lamp.h 1.2KB
  6. pilot_lamp_Demo/main.cpp 183B
  7. pilot_lamp_Demo/mainwindow.cpp 798B
  8. pilot_lamp_Demo/mainwindow.h 231B
  9. pilot_lamp_Demo/pilot_lamp_Demo.pro 792B
  10. pilot_lamp_Demo/res/
  11. pilot_lamp_Demo/res/lampOFF.png 3.24KB
  12. pilot_lamp_Demo/res/lampON.png 3.37KB
  13. pilot_lamp_Demo/roundlamp.cpp 2.2KB
  14. pilot_lamp_Demo/roundlamp.h 554B
  15. pilot_lamp_Demo/rs.qrc 119B
0评论
提交 加载更多评论
其他资源 完成MySoothe应用的界面设计
完成MySoothe应用的界面设计
4.bd-stm32f103-exti.zip
stm32按键板级支持包增加EXTI功能
1-7代码全景.zip
1-7代码全景.zip
数电—设计一多人表决器.zip
数电—设计一多人表决器.zip
数电—设计一多人表决器.zip
高级语言程序设计(C语言)-上课教学PPT+课程设计PPT+作业答案
高级语言程序设计(C语言)-上课教学PPT+课程设计PPT+作业答案
C语言+数据结构学期课程设计《员工管理系统》
关于一个员工管理系统的开发,详细描述了如何构建一个具备基本功能的员工信息管理软件。系统的核心目标是有效地组织和维护员工的个人及工作相关数据,确保数据的准确性和易于访问性。 系统的主要特点包括: 员工信息管理:每个员工的记录包含编号、姓名、性别、出生日期、学历、职务、电话号码和住址。 数据持久化:系统能够将员工数据保存到文件中,以便在程序关闭后数据不会丢失,并且在下次启动时能从文件中恢复这些数据。 数据检索:支持按ID或姓名查找员工的具体信息。 数据更新:允许管理员根据员工的编号修改其个人信息。 数据录入:具备添加新员工信息的功能。 数据移除:可以按员工编号删除不再在职的员工记录。 数据排序:能够按照员工的ID、姓名或出生日期对所有员工信息进行排序。 数据展示:可以列出所有员工的信息,或者展示排序后的员工列表。 在技术实现上,文档采用了C语言编程,并利用了动态顺序表作为存储结构,这使得数据的增删改查更加高效。此外,还设计了一系列函数来实现上述各项功能
JDK-API 中文版文档
JDK_API 中文版文档
Godot小游戏(1.0)
Godot小游戏(1.0)