mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-16 23:18:12 +08:00
80 lines
2.1 KiB
C++
80 lines
2.1 KiB
C++
#include "modelattrslide.h"
|
|
|
|
ModelAttributeSlide::ModelAttributeSlide(const QString& label, float min, float max, int step, QWidget* parent) :
|
|
QWidget(parent)
|
|
{
|
|
// Create main stretch layout
|
|
_stretchLayout = new QHBoxLayout(this);
|
|
_stretchLayout->setContentsMargins(0, 0, 0, 0);
|
|
_stretchLayout->setSpacing(0);
|
|
setLayout(_stretchLayout);
|
|
|
|
// Create Slider
|
|
_slider = new Slider(min, max, step, this);
|
|
_stretchLayout->addWidget(_slider);
|
|
_slider->show();
|
|
|
|
// Create Label
|
|
_label = new QLabel(label, this);
|
|
_label->setMinimumWidth(56);
|
|
_label->setFont(QFont("Corbel", 11));
|
|
_label->show();
|
|
_slider->mainLayout()->insertWidget(0, _label);
|
|
_slider->mainLayout()->insertSpacing(1, 8);
|
|
|
|
// Create Value label
|
|
_val = new QLabel(this);
|
|
_val->setMinimumWidth(32);
|
|
_val->setFont(QFont("Corbel", 11));
|
|
_val->setText(QString::number(_slider->val(), 'f', 1));
|
|
_val->show();
|
|
_slider->mainLayout()->addSpacing(8);
|
|
_slider->mainLayout()->addWidget(_val);
|
|
|
|
// Connect
|
|
connect(_slider, &Slider::onChanged, this, &ModelAttributeSlide::onChanged);
|
|
connect(_slider, &Slider::onSetValue, this, [=]() {
|
|
_val->setText(QString::number(_slider->val(), 'f', 1));
|
|
});
|
|
connect(_slider, &Slider::onDragStart, this, &ModelAttributeSlide::onChangeStart);
|
|
connect(_slider, &Slider::onDragEnd, this, &ModelAttributeSlide::onChangeEnd);
|
|
}
|
|
|
|
ModelAttributeSlide::~ModelAttributeSlide()
|
|
{}
|
|
|
|
void ModelAttributeSlide::setLabel(const QString& label)
|
|
{
|
|
_label->setText(label);
|
|
}
|
|
|
|
void ModelAttributeSlide::setMin(float min)
|
|
{
|
|
_slider->setMin(min);
|
|
}
|
|
|
|
void ModelAttributeSlide::setMax(float max)
|
|
{
|
|
_slider->setMax(max);
|
|
}
|
|
|
|
void ModelAttributeSlide::setStep(float step)
|
|
{
|
|
_slider->setStep(step);
|
|
}
|
|
|
|
void ModelAttributeSlide::setValue(float val)
|
|
{
|
|
_slider->setValue(val);
|
|
}
|
|
|
|
void ModelAttributeSlide::setTransformation(std::function<float(float)> transform, std::function<float(float)> inverse)
|
|
{
|
|
_slider->setTransformation(transform, inverse);
|
|
}
|
|
|
|
void ModelAttributeSlide::setEnabled(bool enable)
|
|
{
|
|
_slider->setEnabled(enable);
|
|
}
|