#pragma once #include #include #include "lts_widgets_export.h" namespace LtsWidgets { class LTSWIDGETS_EXPORT LtsBitfieldWidget : public QWidget { Q_OBJECT Q_PROPERTY(quint8 value READ value WRITE setValue NOTIFY valueChanged) Q_PROPERTY(bool isEditable READ isEditable WRITE setEditable NOTIFY isEditableChanged) Q_PROPERTY(bool hasCaption READ hasCaption WRITE setHasCaption NOTIFY hasCaptionChanged) Q_PROPERTY(QColor onColor READ onColor WRITE setOnColor) Q_PROPERTY(QColor offColor READ offColor WRITE setOffColor) public: explicit LtsBitfieldWidget(QWidget *parent = nullptr, quint8 value = 0); signals: void valueChanged(quint8 newValue); void isEditableChanged(bool option); void hasCaptionChanged(bool option); public slots: void setValue(quint8 value); void setEditable(bool editable); void setHasCaption(bool hasCaption); void setOnColor(const QColor &onColor); void setOffColor(const QColor &offColor); public: quint8 value() const { return m_value; } bool isEditable() const { return m_isEditable; } bool hasCaption() const { return m_hasCaption; } QColor onColor() const {return m_onColor;} QColor offColor() const {return m_offColor;} private: void mousePressEvent(QMouseEvent *event) override; void paintEvent(QPaintEvent *pe) override; private: quint8 m_value = 0; bool m_isEditable = true; bool m_hasCaption = true; QColor m_onColor = Qt::black; QColor m_offColor = Qt::white; }; }