QtIndustrialWidgets 2.3.0
Modern, High-Performance Industrial Instruments & SCADA Widgets for Qt
Loading...
Searching...
No Matches
LinearGauge.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 Paolo Sereno <paolomsereno@gmail.com>
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#pragma once
8
10#include <QtWidgets/QWidget>
11#include <memory>
12#include <QtGui/QColor>
13#include <QtGui/QPixmap>
14
40namespace QtIndustrialWidgets {
41
42class LinearGaugePrivate;
43
45{
46 Q_OBJECT
47
48 Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY appearanceChanged)
49 Q_PROPERTY(bool thermometerMode READ isThermometerMode WRITE setThermometerMode NOTIFY appearanceChanged)
50 Q_PROPERTY(double minimum READ minimum WRITE setMinimum NOTIFY rangeChanged)
51 Q_PROPERTY(double maximum READ maximum WRITE setMaximum NOTIFY rangeChanged)
52 Q_PROPERTY(double value READ value WRITE setValue NOTIFY valueChanged)
53 Q_PROPERTY(int precision READ precision WRITE setPrecision NOTIFY appearanceChanged)
54 Q_PROPERTY(QString unit READ unit WRITE setUnit NOTIFY appearanceChanged)
55 Q_PROPERTY(int majorTicks READ majorTicks WRITE setMajorTicks NOTIFY appearanceChanged)
56 Q_PROPERTY(int minorTicks READ minorTicks WRITE setMinorTicks NOTIFY appearanceChanged)
57 Q_PROPERTY(double warningThreshold READ warningThreshold WRITE setWarningThreshold NOTIFY thresholdChanged)
58 Q_PROPERTY(double errorThreshold READ errorThreshold WRITE setErrorThreshold NOTIFY thresholdChanged)
59 Q_PROPERTY(bool dynamicLiquidColor READ isDynamicLiquidColor WRITE setDynamicLiquidColor NOTIFY appearanceChanged)
60 Q_PROPERTY(bool gradientLiquid READ isGradientLiquid WRITE setGradientLiquid NOTIFY appearanceChanged)
61 Q_PROPERTY(bool digitalDisplayVisible READ digitalDisplayVisible WRITE setDigitalDisplayVisible NOTIFY appearanceChanged)
62 Q_PROPERTY(bool scaleVisible READ scaleVisible WRITE setScaleVisible NOTIFY appearanceChanged)
63 Q_PROPERTY(QColor liquidColor READ liquidColor WRITE setLiquidColor NOTIFY appearanceChanged)
64 Q_PROPERTY(QColor normalColor READ normalColor WRITE setNormalColor NOTIFY appearanceChanged)
65 Q_PROPERTY(QColor warningColor READ warningColor WRITE setWarningColor NOTIFY appearanceChanged)
66 Q_PROPERTY(QColor errorColor READ errorColor WRITE setErrorColor NOTIFY appearanceChanged)
67 Q_PROPERTY(QColor troughColor READ troughColor WRITE setTroughColor NOTIFY appearanceChanged)
68 Q_PROPERTY(QColor scaleColor READ scaleColor WRITE setScaleColor NOTIFY appearanceChanged)
69 Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor NOTIFY appearanceChanged)
70 Q_PROPERTY(QColor bezelColor READ bezelColor WRITE setBezelColor NOTIFY appearanceChanged)
71
72public:
77 explicit LinearGauge(QWidget *parent = nullptr);
78 ~LinearGauge() override;
79
81 [[nodiscard]] Qt::Orientation orientation() const;
83 [[nodiscard]] bool isThermometerMode() const;
85 [[nodiscard]] double minimum() const;
87 [[nodiscard]] double maximum() const;
89 [[nodiscard]] double value() const;
91 [[nodiscard]] int precision() const;
93 [[nodiscard]] QString unit() const;
95 [[nodiscard]] int majorTicks() const;
97 [[nodiscard]] int minorTicks() const;
99 [[nodiscard]] double warningThreshold() const;
101 [[nodiscard]] double errorThreshold() const;
103 [[nodiscard]] bool isDynamicLiquidColor() const;
105 [[nodiscard]] bool isGradientLiquid() const;
107 [[nodiscard]] bool digitalDisplayVisible() const;
109 [[nodiscard]] bool scaleVisible() const;
110
112 [[nodiscard]] QColor liquidColor() const;
114 [[nodiscard]] QColor normalColor() const;
116 [[nodiscard]] QColor warningColor() const;
118 [[nodiscard]] QColor errorColor() const;
120 [[nodiscard]] QColor troughColor() const;
122 [[nodiscard]] QColor scaleColor() const;
124 [[nodiscard]] QColor textColor() const;
126 [[nodiscard]] QColor bezelColor() const;
127
128 [[nodiscard]] QSize sizeHint() const override;
129 [[nodiscard]] QSize minimumSizeHint() const override;
130
131public Q_SLOTS:
133 void setOrientation(Qt::Orientation orientation);
135 void setThermometerMode(bool thermometer);
137 void setValue(double value);
139 void setMinimum(double min);
141 void setMaximum(double max);
143 void setRange(double min, double max);
145 void setPrecision(int precision);
147 void setUnit(const QString &unit);
149 void setMajorTicks(int count);
151 void setMinorTicks(int count);
153 void setWarningThreshold(double threshold);
155 void setErrorThreshold(double threshold);
157 void setDynamicLiquidColor(bool dynamic);
159 void setGradientLiquid(bool gradient);
161 void setDigitalDisplayVisible(bool visible);
163 void setScaleVisible(bool visible);
164
166 void setLiquidColor(const QColor &color);
168 void setNormalColor(const QColor &color);
170 void setWarningColor(const QColor &color);
172 void setErrorColor(const QColor &color);
174 void setTroughColor(const QColor &color);
176 void setScaleColor(const QColor &color);
178 void setTextColor(const QColor &color);
180 void setBezelColor(const QColor &color);
181
182Q_SIGNALS:
184 void valueChanged(double value);
186 void rangeChanged(double min, double max);
188 void thresholdChanged(double warning, double error);
190 void appearanceChanged();
191
192protected:
193 void paintEvent(QPaintEvent *event) override;
194 void resizeEvent(QResizeEvent *event) override;
195 void changeEvent(QEvent *event) override;
196
197private:
198 void invalidateCache();
199 void renderStaticScale(const QSize &size);
200 [[nodiscard]] QColor determineActiveLiquidColor() const;
201
202 std::unique_ptr<LinearGaugePrivate> d_ptr;
203 Q_DECLARE_PRIVATE(LinearGauge)
204};
205
206} // namespace QtIndustrialWidgets
Definition LinearGauge.h:45
Definition AnalysisChart.h:21
Library export macros and version definitions for QtIndustrialWidgets.
#define QTINDUSTRIALWIDGETS_EXPORT
Export/import macro for shared library symbol visibility across dynamic linking boundaries.
Definition qtindustrialwidgets_global.h:25