#ifndef CUSTOMSPINBOX_H
#define CUSTOMSPINBOX_H

#include <QObject>
#include <QSpinBox>
#include <QWidget>

#include <QScopedPointer>
#include <QObject>

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

/**
 * @class CustomSpinBox
 * @brief CustomSpinBox 是一个继承自 QSpinBox 的自定义类，用于创建一个带有自定义编辑对话框的数字选择框。
 * 
 * 这个类的主要功能是提供一个带有自定义编辑对话框的数字选择框，用户可以通过点击编辑按钮来打开对话框进行数值的编辑。
 * 
 * 核心功能包括：
 * - 提供一个自定义的编辑对话框，用于输入和编辑数值。
 * - 重写 eventFilter 方法，用于处理自定义的编辑事件。
 * 
 * 使用示例：
 * @code
 * CustomSpinBox *spinBox = new CustomSpinBox(this);
 * spinBox->setValue(10);
 * @endcode
 * 
 * 构造函数参数：
 * - QWidget *parent: 父窗口部件，用于设置 CustomSpinBox 的父对象。
 * 
 * 注意事项：
 * - 使用 CustomSpinBox 时，需要确保父窗口部件已经正确设置。
 * - 在使用过程中，如果需要自定义编辑对话框的样式和行为，可以通过重写相关方法来实现。
 */
class CustomSpinBox : public QSpinBox
{
    Q_OBJECT
public:
    explicit CustomSpinBox(QWidget *parent = nullptr);
    ~CustomSpinBox();

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

private:
    QScopedPointer<DialogEditValue> m_input_dialog;
};

#endif // CUSTOMSPINBOX_H
