59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
#ifndef PARAMCONTROL_H
|
|
#define PARAMCONTROL_H
|
|
|
|
#include <QWidget>
|
|
|
|
class QLabel;
|
|
class QLineEdit;
|
|
class QPushButton;
|
|
class QHBoxLayout;
|
|
|
|
// ===================== 参数调节控件 =====================
|
|
// 参数名 + 数值输入框(点击/回车弹出数字键盘,↑/↓ 按档加减)+ 保存按钮(可选)+ 恢复出厂值按钮(可选)
|
|
// 旋钮接口 adjustByKnob():调大/调小,数值框的 ↑/↓ 走的就是这条路径
|
|
class ParamControl : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit ParamControl(const QString& name, const QString& unit,
|
|
double step, double min, double max,
|
|
bool withSave, bool withFactory, QWidget* parent = nullptr);
|
|
|
|
void setValue(double v);
|
|
double value() const { return m_value; }
|
|
void setEnabled(bool enabled);
|
|
void setCentered(bool on); // 参数名与数值行水平居中(默认左对齐)
|
|
QWidget* editor() const; // 数值输入框(供页面编排 Tab 顺序)
|
|
|
|
public slots:
|
|
// 旋钮接口:steps > 0 右旋调大、steps < 0 左旋调小;每格 = m_step
|
|
void adjustByKnob(int steps);
|
|
|
|
signals:
|
|
void valueChanged(double v);
|
|
void saveClicked();
|
|
void factoryResetClicked();
|
|
|
|
protected:
|
|
bool eventFilter(QObject* obj, QEvent* ev) override; // 数值框:点击/回车 → 数字键盘,↑/↓ → 按档调值
|
|
|
|
private:
|
|
void refresh();
|
|
void openNumPad();
|
|
|
|
QString m_name;
|
|
QString m_unit;
|
|
double m_step;
|
|
double m_min;
|
|
double m_max;
|
|
double m_value;
|
|
QLineEdit* m_valueEdit = nullptr;
|
|
QLabel* m_unitLabel = nullptr;
|
|
QLabel* m_nameLabel = nullptr;
|
|
QHBoxLayout* m_valRow = nullptr;
|
|
QPushButton* m_save = nullptr;
|
|
QPushButton* m_factory = nullptr;
|
|
};
|
|
|
|
#endif // PARAMCONTROL_H
|