Files
qt6-migration-pipeline/Lts/Common/LtsWidgets/lts_bitfield_widget.h
T

96 lines
1.6 KiB
C++
Executable File

#pragma once
#include <QWidget>
#include <QMouseEvent>
#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;
};
}