按照我自己的理解,qt模拟键盘分三个层次的模拟。
1.单线程的模拟。
2.qt框架内的模拟,可以跨线程的。
3.在操作系统的图形界面内模拟,相当于模拟了一个输入法。
第一种,一般就是添加多个按键,QToolButton,QPushButton都可以,每一个按键,对应一个SLOT槽。然后
在槽内实现对应输入框的显示。这种实现的原理比较简单,缺点如果按键较多,程序就非常臃肿。而且只能
在一个线程中运行,如果是多线程,就需要重复实现。
第二种,利用qt给定的设计输入法的类QInputContext或者QWSInputMethod实现。QInputContext用来设计
通用平台的输入法
QWSInputMethod只用来设计嵌入式平台的输入法。
QInputContext实现的输入法:
首先,设计一个显示各种按键的面板。每个按键都可以通过QSignalMapper将clicked()信号,附加一个
int型或QWidget型的信号然后利用这个信号来识别按下的具体是哪个键
其次,处理好焦点问题。将按键面板的窗口属性设置为Qt::tool,并重新实现event函数。具体就是如果它
获得了焦点,就将焦点移到上一个焦点窗体。也就是它不能获得焦点
最后,在继承QInputContext时,要新实现
QString identifierName();
QString language();
bool isComposing() const;
void reset();
bool filt