forked from hanxiaoluo/KeyboardLiuDianWu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
frminput.h
121 lines (102 loc) · 4.24 KB
/
frminput.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#ifndef FRMINPUT_H
#define FRMINPUT_H
#include <QWidget>
#include <QMouseEvent>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QTextEdit>
#include <QPlainTextEdit>
#include <QTextBrowser>
#include <QtSql>
#include <QPushButton>
#include <QTimer>
#include <QShowEvent>
#include <QMutexLocker>
namespace Ui
{
class frmInput;
}
class frmInput : public QWidget
{
Q_OBJECT
public:
explicit frmInput(QWidget *parent = 0);
~frmInput();
//单例模式,保证一个程序只存在一个输入法实例对象
static frmInput *Instance() {
if (!_instance) {
static QMutex mutex;
QMutexLocker locker(&mutex);
if (!_instance) {
_instance = new frmInput;
}
}
return _instance;
}
//初始化面板状态,包括字体大小
void Init(QString position, QString style, int btnFontSize, int labFontSize);
protected:
//事件过滤器,处理鼠标在汉字标签处单击操作
bool eventFilter(QObject *obj, QEvent *event);
//鼠标拖动事件
void mouseMoveEvent(QMouseEvent *e);
//鼠标按下事件
void mousePressEvent(QMouseEvent *e);
//鼠标松开事件
void mouseReleaseEvent(QMouseEvent *);
private slots:
//焦点改变事件槽函数处理
void focusChanged(QWidget *oldWidget, QWidget *nowWidget);
//输入法面板按键处理
void btn_clicked();
//改变输入法面板样式
void changeStyle(QString topColor, QString bottomColor,
QString borderColor, QString textColor);
//定时器处理退格键
void reClicked();
private:
Ui::frmInput *ui;
static frmInput *_instance; //实例对象
int deskWidth; //桌面宽度
int deskHeight; //桌面高度
int frmWidth; //窗体宽度
int frmHeight; //窗体高度
QPoint mousePoint; //鼠标拖动自定义标题栏时的坐标
bool mousePressed; //鼠标是否按下
bool isPress; //是否长按退格键
QPushButton *btnPress; //长按按钮
QTimer *timerPress; //退格键定时器
bool checkPress(); //校验当前长按的按钮
bool isFirst; //是否首次加载
void InitForm(); //初始化窗体数据
void InitProperty(); //初始化属性
void ChangeStyle(); //改变样式
void ChangeFont(); //改变字体大小
void ShowPanel(); //显示输入法面板
QWidget *currentWidget; //当前焦点的对象
QLineEdit *currentLineEdit; //当前焦点的单行文本框
QTextEdit *currentTextEdit; //当前焦点的多行文本框
QPlainTextEdit *currentPlain; //当前焦点的富文本框
QTextBrowser *currentBrowser; //当前焦点的文本浏览框
QString currentEditType; //当前焦点控件的类型
QString currentPosition; //当前输入法面板位置类型
QString currentStyle; //当前输入法面板样式
int btnFontSize; //当前输入法面板按钮字体大小
int labFontSize; //当前输入法面板标签字体大小
void insertValue(QString value);//插入值到当前焦点控件
void deleteValue(); //删除当前焦点控件的一个字符
QString currentType; //当前输入法类型
void changeType(QString type); //改变输入法类型
void changeLetter(bool isUpper);//改变字母大小写
QList<QLabel *>labCh; //汉字标签数组
QStringList allPY; //所有拼音链表
QStringList currentPY; //当前拼音链表
int currentPY_index; //当前拼音索引
int currentPY_count; //当前拼音数量
void selectChinese(); //查询汉字
void showChinese(); //显示查询到的汉字
void setChinese(int index); //设置当前汉字
void clearChinese(); //清空当前汉字信息
};
#endif // FRMINPUT_H