QT QWidget 爱心灯

简介

就是使用QTableWidget生成一个LED点阵, 使用网上的Arduino点阵数组, 应用在此;

代码

LEDWidget.h


#ifndef LEDWIDGET_H
#define LEDWIDGET_H


#include <QWidget>


class LEDWidget : public QWidget
{
public:
    LEDWidget(QWidget *parent = nullptr);

    inline void controlLed(bool on=false)
    {
        if (on != m_on)
        {
             m_on = on;
             update();
        }
    }
    inline void toggleLed()
    {
        m_on = !m_on;
        update();
    }

protected:
    void paintEvent(QPaintEvent *event) override;

    bool m_on;
};


#endif // LEDWIDGET_H

LEDWidget.cpp


#include "ledwidget.h"
#include <QPainter>
#include <QColor>
#include <QPen>


LEDWidget::LEDWidget(QWidget *parent)
    : QWidget(parent), m_on(false)
{

}

void LEDWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);

    QPen pen;
    pen.setColor(QColor(128, 128, 128)); // 设置线颜色为浅灰色
    painter.setPen(pen);

    // 设置LED灯的颜色和大小
//        QColor ledColor(85, 239, 196); // 红色
    int ledSize = std::max(20, width() >= height() ? height() - 10 : width() - 10);
    QLinearGradient gradient(0, 0, width(), height());
    if (m_on)
    {
        gradient.setColorAt(0, "#43e97b");
        gradient.setColorAt(1, "#38f9d7");
    }
    else
    {
        gradient.setColorAt(0, "#e6e9f0");
        gradient.setColorAt(1, "#eef1f5");
    }

    painter.setBrush(gradient);

    // 计算LED灯的位置
    int x = (width() - ledSize) / 2;
    int y = (height() - ledSize) / 2;

    // 绘制LED灯的主体
//        painter.setBrush(ledColor);
    painter.drawEllipse(x, y, ledSize, ledSize);
}

爱心点阵代码

    int table[64] =
    {
      0, 0, 0, 0, 0, 0, 0, 0,
      0, 1, 1, 0, 0, 1, 1, 0,
      1, 1, 1, 1, 1, 1, 1, 1,
      1, 1, 1, 1, 1, 1, 1, 1,
      1, 1, 1, 1, 1, 1, 1, 1,
      0, 1, 1, 1, 1, 1, 1, 0,
      0, 0, 1, 1, 1, 1, 0, 0,
      0, 0, 0, 1, 1, 0, 0, 0,
    };

    ui->tableWidget->setRowCount(8);
    ui->tableWidget->setColumnCount(8);

    for (int r = 0; r < ui->tableWidget->rowCount(); ++r)
    {
        for  (int l = 0; l < ui->tableWidget->columnCount(); ++l)
        {
            MarqueeLED *wgt = new MarqueeLED(ui->tableWidget->rowCount()*5 + l);
            wgt->controlLed(table[ui->tableWidget->rowCount()*r + l]);
            ui->tableWidget->setColumnWidth(l, 100);
            ui->tableWidget->setRowHeight(l, 100);
            ui->tableWidget->setCellWidget(r, l, wgt);
        }
    }

完整代码

效果

在这里插入图片描述

参考

QT QWidget - 跑马灯

QT Widget - 随便画个圆

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/254185.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue门户设计器实现技术方案

一、什么是门户设计器 门户设计器是一种用于创建和设计门户网站或者应用系统首页的工具。它通常是一个软件应用程序&#xff0c;可以帮助用户快速、轻松地设计和构建自己的门户网站或者应用系统的首页。门户设计器通常提供在线拖拉拽设计器&#xff0c;以及各种模板、主题和组…

Ubuntu系统入门指南:基础操作和使用教程

学习目标&#xff1a; 解Ubuntu系统的基本概念和特点&#xff0c;包括其开源性、稳定性和安全性&#xff0c;以及如何获取和安装Ubuntu系统。 掌握Ubuntu系统的用户界面和桌面环境&#xff0c;包括如何使用桌面面板、启动器和工作区&#xff0c;以及如何自定义和个性化你的桌面…

终于知道灵活自助分析的BI报表是怎么做的了

不知道是不是临近年底要做年终分析报告的原因&#xff0c;最近很多小伙伴都来咨询BI报表怎么做的问题。其实BI报表还真的只需点击、拖拉拽就能完成。接下来就来简单地说几个做BI报表都需要注意的事项。 BI报表制作流程&#xff1a; 1、连接数据源&#xff0c;奥威BI大数据分析…

pytorch——支持向量机

1、任务要求 针对已知类别的5张卧室照片(标签为1)和5张森林照片(标签为-1)所对应的矩阵数据进行分类训练,得到训练集模型;再利用支持向量机对另外未知类别的5张卧室照片和5张森林照片数据进行测试分类(二分类)&#xff0c;得到分类结果及其准确率。 2、先导入查看基本数据 3、…

SGPIO介紹

什么是SGPIO&#xff1f; Serial General Purpose Input Output (SGPIO) is a method to serialize general purpose IO signals. SGPIO defines the communication between an initiator (e.g. a host bus adapter) and a target (e.g. a backplaneholding disk drives). The …

Java代码世界的神奇技巧与魔法艺术

目录 前言1 Java的独特优势1.1 跨平台性1.2 面向对象1.3 强大的生态系统 2 Java的应用场景2.1 企业级应用开发2.2 移动应用开发2.3 大数据处理2.4 云计算 3 代码技巧分享4 案例分享结语 前言 当谈到优雅而又强大的编程语言时&#xff0c;Java无疑是一个绝佳的选择。Java作为一…

wsl kafka的简单应用

安装并配置单机版kafka所需环境 wsl2 环境可用性较高&#xff0c;如下介绍在该环境中安装单机版本kafka的详细过程。 启动命令行工具启动wsl&#xff1a;wsl --user root --cd ~&#xff0c;&#xff08;以root用户启动&#xff0c;进入wsl后当前路径为~“用户主目录”&#…

全城直饮及小区管道直饮水工程,应采用什么工艺

“中空纤维纳滤级分离膜”----是当今世界最顶级的纳米产品&#xff0c;被国家科技部评为:国内领先、世界先进。中空纳滤是饮用水矿化度关键技术的重大提升! 中空纤维纳滤膜国家863攻关项目,获得多项国家发明专利 中空纤维纳滤级分离膜特性 中空纤维纳滤膜,每根中空膜的膜壁为…

CRM客户管理系统的功能有哪些?一文全解

我们常说&#xff0c;CRM系统是企业管理的神器。很多企业的需求比较独特&#xff0c;标准化的CRM系统无法满足企业的需求&#xff0c;可能就会涉及到系统开发。那么&#xff0c;CRM客户管理系统要具备哪些功能&#xff1f;首先&#xff0c;一个完整的CRM客户管理系统应该具备以…

千亿级工业大数据的最优方案!智光电气的时序数据库应用

小T导读&#xff1a; 此前&#xff0c;智光电气&#xff08;股票代码&#xff1a;002169&#xff09;子公司智光研究院在工业项目中使用基于 Apache Hadoop 的 CDH 集群来做时序业务数据的处理&#xff0c;但由于数据量级太大&#xff0c;处理占用了大量资源&#xff0c;导致集…

如何实现订单自动取消

由于Redis具有过期监听的功能&#xff0c;于是就有人拿它来实现订单超时自动关闭的功能&#xff0c;但是这个方案并不完美。今天来聊聊11种实现订单超时自动关闭的方案&#xff0c;总有一种适合你&#xff01;这些方案并没有绝对的好坏之分&#xff0c;只是适用场景的不大相同。…

亚马逊云科技 re:Invent 大会 - ElastiCache Serverless模式来袭

亚马逊云科技 re:Invent 大会 - ElastiCache Serverless模式来袭 本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 文章目录 亚马逊云…

Apache SeaTunne简介

Apache SeaTunne简介 文章目录 1.Apache SeaTunne是什么&#xff1f;1.1[官网](https://seatunnel.apache.org/)1.2 项目地址 2.架构3.特性3.1 丰富且可扩展的连接器和插件机制3.2 支持分布式快照算法以确保数据一致性3.3 支持流、批数据处理&#xff0c;支持全量、增量和实时数…

30. 深度学习进阶 - 池化

Hi&#xff0c;你好。我是茶桁。 上一节课&#xff0c;我们详细的学习了卷积的原理&#xff0c;在这个过程中给大家讲了一个比较重要的概念&#xff0c;叫做input channel&#xff0c;和output channel。 当然现在不需要直接去实现, 卷积的原理PyTorch、或者TensorFlow什么的…

YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

叙永县微公益协会举办“对不适触碰说‘NO’”预防性侵教育活动

&#xff08;梁平 赵维维&#xff09;12月16日&#xff0c;一场主题为“对不适触碰说‘NO’”的预防性侵教育活动在叙永县摩尼社工站成功举行。此次活动由叙永县微公益协会主办&#xff0c;得到了叙永县民政局和摩尼镇人民政府的大力支持和指导。本次活动旨在加强儿童性教育&am…

字节跳动回应被 OpenAI 封禁账户:正与 OpenAI 联系沟通

据 The Verge 报道&#xff0c;字节跳动一直在秘密使用 OpenAI 的技术开发自己的具有竞争性的大语言模型&#xff0c;这违反了 OpenAI 的服务条款。目前&#xff0c;字节跳动的账户已被 OpenAI 暂停。 OpenAI 的服务条款规定&#xff0c;公司所输出的模型不能被用于「开发任何…

a*算法代码 python,python isalpha方法

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;a*算法代码 python&#xff0c;python isalpha方法&#xff0c;今天让我们一起来看看吧&#xff01; 更新&#xff1a; GitHub - pierrepaleo/sift_pyocl: An implementation of SIFT on GPU with OpenCL python-siftgp…

回收站数据恢复,分享3个可行方法!

“我真的太粗心啦&#xff01;本来想删除一些电脑里不重要的文件&#xff0c;但是不小心把一些很重要的文件一起删除了&#xff0c;这可怎么办呢&#xff1f;我应该通过什么方法找回这些文件呢&#xff1f;” 在使用电脑的过程中&#xff0c;误删文件是很多用户都无法避免的一件…

【Swiss-Model 同源建模】

Swiss-Model是一种同源建模方法&#xff0c;其基本原理是利用序列的同源性来推断蛋白质的三维结构。具体来说&#xff0c;就是通过找到与目标蛋白质序列同源且结构已知的模板蛋白质&#xff0c;来预测目标蛋白质的结构。 同源建模的主要步骤包括&#xff1a; 模板的确定&…