61 lines
1.1 KiB
C++
61 lines
1.1 KiB
C++
#pragma once
|
||
|
||
#include <QWidget>
|
||
|
||
class QDoubleSpinBox;
|
||
class QSlider;
|
||
class QLabel;
|
||
|
||
namespace gui {
|
||
|
||
// 0..1 浮点参数:Slider + DoubleSpinBox(可复用)
|
||
class Float01ParamControl final : public QWidget {
|
||
Q_OBJECT
|
||
public:
|
||
explicit Float01ParamControl(QWidget* parent = nullptr);
|
||
|
||
void setValue01(double v);
|
||
double value01() const;
|
||
|
||
void setEnabled(bool on);
|
||
|
||
signals:
|
||
void valueChanged01(double v);
|
||
|
||
private:
|
||
void syncFromSlider();
|
||
void syncFromSpin();
|
||
|
||
QSlider* m_slider = nullptr;
|
||
QDoubleSpinBox* m_spin = nullptr;
|
||
bool m_block = false;
|
||
};
|
||
|
||
// Vec2 参数:两个 DoubleSpinBox(可复用)
|
||
class Vec2ParamControl final : public QWidget {
|
||
Q_OBJECT
|
||
public:
|
||
explicit Vec2ParamControl(QWidget* parent = nullptr);
|
||
|
||
void setValue(double x, double y);
|
||
double x() const;
|
||
double y() const;
|
||
|
||
void setEnabled(bool on);
|
||
|
||
signals:
|
||
void valueChanged(double x, double y);
|
||
|
||
private:
|
||
void emitIfChanged();
|
||
|
||
QDoubleSpinBox* m_x = nullptr;
|
||
QDoubleSpinBox* m_y = nullptr;
|
||
bool m_block = false;
|
||
double m_lastX = 0.0;
|
||
double m_lastY = 0.0;
|
||
};
|
||
|
||
} // namespace gui
|
||
|