QtKeyboard-master(桌面虚拟键盘)
介绍
数字键盘
英文
中文
符号
大写
1.类图分析
1.1 AbstractKeyboard与Keyboard
类图中AbstractKeyboard继承于QWidget,而Keyboard则继承于AbstractKeyboard。
或许有人会问,为什么Keyboard直接继承于QWidget这样更简单直接?
这里看情况,在单个键盘的情况下这种做法是简单直接。如何是存在多个键盘(数字键盘,字母键盘等),我们需要切换起来就会变得很麻烦。
AbstractKeyboard提供name与setName接口是为了标识多个键盘的情况。
类图
1.2 Keyboard与KeyButton
- Keyboard存在多个KeyButton;
- Keyboard类通过构造多个按键并使用(h1(),h2(),h3(),h4())进行布局。
- 当用户按下切换大小写按钮触发事先构造绑定在Keyboard类的switchCapsLock槽函数。
1.3 KeyButton与KeyMode
- 由于KeyButton的KeyMode为了表达按键的多种显示,比如小写q,当按下大写切换就会变为大写Q,当按下字符切换就会切换到数字1。
- KeyMode的Mode包含按键的key值,按键的value,按键在界面的显示值,还有按键的类型。
2.用户使用键盘顺序图
3. 用户切换大小写键盘为例
KeyButton
Mode为一个状态,
List存储了这个按键的多个状态,用于切换大小写switchCapsLock和特殊符号switchSpecialChar;
按键信息的传递流程: