QT绘制led灯(附完整源码)

时间:2025-03-07 16:45:40
#include <QApplication> #include <QWidget> #include <QPaintEvent> #include <QPainter> #include <QPainterPath> class LedWidget : public QWidget { public: LedWidget(QWidget *parent = nullptr) : QWidget(parent), m_on(false) { setFixedSize(100, 100); } void setOn(bool on) { m_on = on; update(); } protected: void paintEvent(QPaintEvent *event) override { Q_UNUSED(event); QPainter painter(this); int width = this->width(); int height = this->height(); // 设置绘制参数 painter.setRenderHint(QPainter::Antialiasing); painter.setPen(Qt::NoPen); // 创建路径 QPainterPath path; // 计算半径和中心位置 int radius = qMin(width, height) / 2; int centerX = width / 2; int centerY = height / 2; // 添加外圆 path.addEllipse(centerX - radius, centerY - radius, 2 * radius, 2 * radius); // 添加内圆 radius -= 10; path.addEllipse(centerX - radius, centerY - radius, 2 * radius, 2 * radius); // 设置画刷颜色 QColor color = m_on ? Qt::red : Qt::darkGray; painter.setBrush(color); // 绘制LED灯 painter.drawPath(path); } private: bool m_on; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); LedWidget ledWidget; ledWidget.show(); // 测试:设置LED灯为开启状态 ledWidget.setOn(true); return app.exec(); }