#ifndef NUMKEYDIA_H #define NUMKEYDIA_H #include "NumKeyBoard_global.h" #include #include // 向前声明 namespace Ui { class NumKeyDia; } class NumKeyDiaPrivate; class NUMKEYBOARD_EXPORT NumKeyDia : public QDialog { Q_OBJECT // 声明私有类 Q_DECLARE_PRIVATE(NumKeyDia) public: explicit NumKeyDia(QWidget *parent = nullptr); ~NumKeyDia(); static NumKeyDia *instance(); void setValue(const QString &value); QString &getValue(); protected: bool eventFilter(QObject *obj, QEvent *event) override; private slots: void on_btn_ok_clicked(); void on_btn_cancel_clicked(); void on_btn_clear_clicked(); void on_btn_back_clicked(); void btn_input_clicked(); void closeKeyBoard(); private: // 使用 QScopedPointer 管理私有实现类 QScopedPointer d_ptr; static NumKeyDia *singleton; // 禁用拷贝 Q_DISABLE_COPY(NumKeyDia) }; namespace KeyBoard { NUMKEYBOARD_EXPORT NumKeyDia *app(); }; #endif // NUMKEYDIA_H