Qt 封装一个简单的LED(指示灯)控件

Qt 封装一个简单的LED(指示灯)控件

1,效果~

LED的三种状态效果

  • 所以
  • 这个简单的LED类可以自定义大小~
  • 可以点亮或熄灭,也可以闪烁👁️~
  • 闪烁的时间间隔⌛可自定义,只需要在设置闪烁状态前调用类的setInterval(msec)函数~
  • 有几种预定义的颜色(红🔴、绿🟢、蓝🔵、黄🟡和橘色🟠),也提供自定义颜色的函数~
  • 如果还满足不了需要,就得自己扩展🧑‍🔧了,类很小,这也很方便~
  • 工程文件中有这个例子代码,可以当作用法入门,其实只是引入头文件,定义类对象,然后当一个普通控件(如:QPushButton)来用~
  • 最简单的方法是把类文件QSimpleLed.hQSimpleLed.cpp拷到自己工程里,然后在需要使用的文件里包含。类代码对Qt版本没有特别要求~
  • 差不多了,有了上面这几点提示,从下面下载文件try try💪💪💪,如果还有其它问题,欢迎在下面留个评论~
  • 另外下面第三部分是实现过程中的一些要点~

2,资源文件

  • 下载链接:链接:https://share.weiyun.com/5HK0503W 密码:rxdmyk
  • 工程文件结构
    工程文件简析
    QtSimpleLed.hQtSimpleLed.cpp是封装的LED类
    mainwindow.hmainwindow.cpp里面有例子
    其它是Qt建工程时自己生成的。

3,关于例子

    QTimer::singleShot(200/7.0*1, nullptr, [&]() {
   
        stepLed01->setStates(QSimpleLed::BLINK);
    });
  • 上面的代码是例子中设置LED闪烁的,用了lamda(C++11引入),第一次接触可以不太懂,意思是:
  • 200/7.0*1秒后执行一下这个代码块{ stepLed01->setStates(QSimpleLed::BLINK); }
  • 用传统写法:
// 定义一个定时器
// 将定时器设置成一次触发(singleShot)类型
// 定义一个slot里面是 stepLed01->setStates(QSimpleLed::BLINK);
// 连接定时器的timeout信号和这个slot
// 调用start()启动定时器
  • 所以这样步骤比较繁琐,第一次接触可以看看C++ lamda的语法,用起来非常容易,毕竟总是先有了第一次才会有第二次~🙂

4,实现过程关键点…

  • 这地写实现过程中的一些想法。

  • 整体思路是继承QAbstractButton类然后实现其重绘(paintEvent())虚函数,最后绘制我们想要的效果:
    整体思路

  • 下面的问题是怎样实现LED所表现出来的效果了:

  • 这里主要用到了颜色渐变效果,这点我在之前的一个blog中说的足够多:👇👇👇
    一文搞懂Qt颜色渐变 - https://blog.csdn.net/weixin_37818081/articl

  • 36
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值