#ifndef CUSTOMDOUBLESPINBOX_H
#define CUSTOMDOUBLESPINBOX_H

#include <QDoubleSpinBox>
#include <QObject>
#include <QWidget>

#include <QScopedPointer>
#include <QObject>

#include "settings/OtherSettings/dialog/DialogEditValue.h"

/**
 * @class CustomDoubleSpinBox
 * @brief CustomDoubleSpinBox 是一个继承自 QDoubleSpinBox 的自定义小部件，用于在用户界面中显示和编辑双精度浮点数。
 * 
 * CustomDoubleSpinBox 类扩展了 QDoubleSpinBox 的功能，允许用户通过自定义对话框编辑数值。该类的主要功能包括：
 * - 显示和编辑双精度浮点数。
 * - 通过事件过滤器实现自定义对话框的显示。
 * 
 * 使用示例：
 * @code
 * CustomDoubleSpinBox *spinBox = new CustomDoubleSpinBox(parentWidget);
 * spinBox->setValue(3.14);
 * @endcode
 * 
 * 构造函数参数：
 * - QWidget *parent: 父窗口部件，默认为 nullptr。
 * 
 * 注意事项：
 * - 使用该类时，请确保父窗口部件已经正确初始化。
 * - 该类可能存在潜在的副作用，例如在编辑过程中可能会改变用户界面状态。
 */
class CustomDoubleSpinBox : public QDoubleSpinBox
{
    Q_OBJECT
public:
    explicit CustomDoubleSpinBox(QWidget *parent = nullptr);
    ~CustomDoubleSpinBox();

protected:
    bool eventFilter(QObject *obj, QEvent *event) override;

private:
    QScopedPointer<DialogEditValue> m_input_dialog;
};

#endif // CUSTOMDOUBLESPINBOX_H
