QT自定义控件之车辆雨刷器

该文介绍了一个基于QT的自定义控件,用于显示车辆雨刮的控制状态。通过QWidget和QPainter重构QPaintEvent事件进行绘制,支持多种工作模式。在MainWindow类中,与UI交互,根据组合框选择更改雨刮模式。
摘要由CSDN通过智能技术生成

基于QT自定义设计的车辆雨刮控制显示器

1. 设计说明

基于QWidget设计实现,通过重构QPaintEvent事件,绘制出的车辆远近光灯控件,可通过QWidget提升方法,应用于项目中.

2. 核心代码

#ifndef QCUSTOMWIPER_H
#define QCUSTOMWIPER_H

#include <QWidget>
#include <QPainter>

/**
 * @brief Feature:
 * Support
 * Support
 * Support
 * Support
 */

#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,0,0))
#include <QtDesigner/QDesignerExportWidget>
#else
#include <QtUiPlugin/QDesignerExportWidget>
#endif

class QDESIGNER_WIDGET_EXPORT QCustomMobileSignal : public QWidget
#else
class QCustomWiper : public QWidget
#endif
{
    Q_OBJECT
    //    Q_PROPERTY()
public:
    enum WiperMode {
        WIPERMODE_DEFAULT = 0,
        WIPERMODE_A = 1,
        WIPERMODE_B = 2,
        WIPERMODE_C = 3,
    };

    explicit QCustomWiper(QWidget *parent = nullptr);
    ~QCustomWiper();

protected:
    QSize sizeHint()                const;
    QSize minimumSizeHint()         const;

    void paintEvent(QPaintEvent *);
    void resizeEvent(QResizeEvent *);

    void drawBackground(QPainter *painter);
    void drawWiper(QPainter *painter);
private:
    QColor m_active_color_;
    QColor m_unactive_color_;

    WiperMode m_wiper_state_;
    QColor m_background_color_;

signals:

public slots:
    void setWiperMode(WiperMode mode);
};

#endif // QCUSTOMWIPER_H

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->cbx_wipermode->addItem("关闭", QVariant("DEFAULT"));
    ui->cbx_wipermode->addItem("模式A", QVariant("MODEA"));
    ui->cbx_wipermode->addItem("模式B", QVariant("MODEB"));
    ui->cbx_wipermode->addItem("模式C", QVariant("MODEC"));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_cbx_wipermode_currentIndexChanged(const QString &arg1)
{
    QString value = ui->cbx_wipermode->currentData().toString();

    if (value == "DEFAULT")
    {
        ui->widget->setWiperMode(QCustomWiper::WIPERMODE_DEFAULT);
    } else if (value == "MODEA") {
        ui->widget->setWiperMode(QCustomWiper::WIPERMODE_A);
    } else if (value == "MODEB") {
        ui->widget->setWiperMode(QCustomWiper::WIPERMODE_B);
    } else if (value == "MODEC") {
        ui->widget->setWiperMode(QCustomWiper::WIPERMODE_C);
    }
}

3.效果示意图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值