4#pragma warning(disable : 4800)
5#pragma warning(disable : 4251)
6#pragma warning(disable : 4244)
14#include "../../global.hpp"
15#include "../../utilities/system_info.hpp"
27 class LabelSlider :
public QFrame
33 explicit LabelSlider(Qt::Orientation orientation = Qt::Vertical,
bool enableButtons =
false,
39 auto layout =
new QGridLayout(
this);
41 slider_ =
new QSlider;
42 slider_->setOrientation(orientation);
45 slider_, &QSlider::sliderReleased,
this,
47 SetValue(slider_->value());
48 ValueChanged(slider_->value());
50 Qt::QueuedConnection);
57 auto upButton_ =
new QToolButton;
58 upButton_->setArrowType(Qt::UpArrow);
59 upButton_->setMaximumSize(buttonSize_);
61 auto downButton_ =
new QToolButton;
62 downButton_->setArrowType(Qt::DownArrow);
63 downButton_->setMaximumSize(buttonSize_);
66 upButton_, &QToolButton::clicked,
this,
68 auto value = slider_->value();
69 value += slider_->singleStep();
70 if (value > Maximum())
74 Qt::QueuedConnection);
77 downButton_, &QToolButton::clicked,
this,
79 auto value = slider_->value();
80 value -= slider_->singleStep();
81 if (value < Minimum())
85 Qt::QueuedConnection);
87 layout->addWidget(maxLabel_, 0, 0, Qt::AlignRight);
88 layout->addWidget(slider_, 1, 1, Qt::AlignCenter);
89 layout->addWidget(minLabel_, 2, 0, Qt::AlignRight);
93 layout->addWidget(upButton_, 0, 1, Qt::AlignCenter);
94 layout->addWidget(downButton_, 2, 1, Qt::AlignCenter);
98 void SetMinimum(
int value)
100 slider_->setMinimum(value);
101 SetLabel(minLabel_, QString::number(value));
104 void SetMaximum(
int value)
106 slider_->setMaximum(value);
107 SetLabel(maxLabel_, QString::number(value));
110 void SetValue(
int value)
113 value = ValidValue(value);
116 if (slider_->value() != value)
117 slider_->setValue(value);
122 void SetSingleStep(
int value)
124 slider_->setSingleStep(value);
129 return slider_->minimum();
134 return slider_->maximum();
139 return slider_->value();
144 return slider_->singleStep();
147 void SetBoldLabel(
bool value)
150 SetLabel(maxLabel_, maxLabel_->text());
151 SetLabel(minLabel_, minLabel_->text());
156 void ValueChanged(
int value);
159 void SetLabel(QLabel *label,
const QString &text)
162 label->setText(
"<b>" + text +
"</b>");
164 label->setText(text);
167 int ValidValue(
int value)
169 if (value == Maximum())
171 while (value % SingleStep() != 0)
175 else if (value == Minimum())
177 while (value % SingleStep() != 0)
182 auto modulo = value % SingleStep();
186 if (modulo >= (SingleStep() / 2))
188 while (value % SingleStep() != 0)
194 while (value % SingleStep() != 0)
Namespace for user interface components.
Definition decl_image_scene.hpp:39
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17