#pragma once #include "lts_widgets_export.h" #include #include #include 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; }; } // namespace LtsWidgets