#include #include #include BCValueEditor::BCValueEditor( int sliderValue, QWidget *parent ) : QWidget(parent) { setupUi(this); // wir wollen ja modern sein _slider->setStyle(new BCSliderStyle()); setAutoFillBackground(true); QSizePolicy sp = _commitButton->sizePolicy(); sp.setRetainSizeWhenHidden(true); // <--- Das ist der magische Schalter _commitButton->setSizePolicy(sp); _slider->setRange(0, 100); _slider->setValue( sliderValue ); // Wenn Slider bewegt wird -> Signal nach außen senden connect(_slider, &QSlider::valueChanged, this, [this](int val) { emit valueChanged(val); }); // Wenn Reset gedrückt wird -> Slider auf 0 (löst auch valueChanged aus) connect(_commitButton, &QPushButton::clicked, this, [this]() { emit valueCommited( getValue() ); }); } int BCValueEditor::getValue() const { return _slider->value(); } void BCValueEditor::setValue(int val) { // Block Signals verhindern Endlosschleifen, falls das Model // das Widget während des Updates neu setzt (passiert manchmal bei Live-Updates). if (val != _slider->value()) { bool blocked = _slider->blockSignals(true); _slider->setValue(val); _slider->blockSignals(blocked); } }