Files
NumKeyBoard/numkeydia.h
T
2026-05-21 15:18:53 +08:00

57 lines
1.2 KiB
C++

#ifndef NUMKEYDIA_H
#define NUMKEYDIA_H
#include "NumKeyBoard_global.h"
#include <QDialog>
#include <QScopedPointer>
// 向前声明
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;
// 统一处理物理键盘确认键,保证主键盘 Enter 和小键盘 Enter 都等价于点击 OK。
void keyPressEvent(QKeyEvent *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<NumKeyDiaPrivate> d_ptr;
static NumKeyDia *singleton;
// 禁用拷贝
Q_DISABLE_COPY(NumKeyDia)
};
namespace KeyBoard
{
NUMKEYBOARD_EXPORT NumKeyDia *app();
};
#endif // NUMKEYDIA_H