基于Qt/E的嵌入式Linux中文输入法的设计与实现
法窗口由中英文切换键、拼音框、汉字显示框和软键盘组成,软键盘的按键类PushBut-ton继承自Qt的QToolButton类。
当按键被按下时发送信号keyPress,由信号keyPress触发sendKey槽来实现拼音输入框显示。
connect(btn,SIGNAL(keyClick(Qt::Key)),this,SLOT(sendKey(Qt::Key,bool,boo1))
当拼音输入框变化时会触发汉字显示框的变化,由textChanged信号触发change槽,显示汉字。
connect(inpyLineEdit,SIGNAL(textChanged(constQString)),this,SLOT(change(c')nstQString)))
在这个软键盘中,共需要实现拼音、英文大小写、各种符号及一般的功能按键,其键盘的布局设计在QtDesigner中,由于嵌入式系统显示屏大小的关系,需要一键多用,所以本文通过读取XML文档的方式来显示按键上的text文本。例如:0键对应序号为nr=15,初始化时PushButton0键text设置为0,当按下shift时,text设置为!,按下shift时text设置为0,keycodeI,2,3为Qt::Key值,XML文档格式如下:
图3软键盘界面
软键盘左上角的CheckBox用于中英文切换,选中时,输人中文,不选时输入的则是英文,在英文输入时,若按下Caps键软键盘面板上的数字键,切换成常用符号,英文全变成大写。1-r按键是本输入法的特色,按下1-r键可以选择需要输出汉字的字体和大小,其余的按键功能同Pc机键盘。
因为没有桌面管理程序,本文还设计了一个置顶的浮动框,用于打开软键盘。当点击输入法按键时,弹出软键盘。
2。3输入法设计
Qt/E输入法基类为QWSInputMethod,在这个基类中定义了一些接口用以支持输入法程序设计,并从QWSInputMethod这个类继承出一个输入法类,在这个类中处理键盘和鼠标事件,把接收到的键盘事件按照输入法的编码规则转换为对应的中文,一个汉字,或者是一个中文短语,并把最终用户的选择发送到当前编辑窗口。
1nputMethod类继承QWSInputMethod类来实现输入法的处理,在这里实现的几个主要的接口函数有:
virtualboolfilter(intunicode,intkeycode,intmodifiers,bootisPress,boolautoRepeat)
这个接口的作用就是过滤键盘事件,在这个函数中处理键盘输人,并且根据相应的输人法方法把键盘输入转换为相应的中文。
voidsendc0mmitstring(constQStringeommitString,intrepIaceFromPosion:0,intreplaceLength=0)
这个接口函数表示把相应的字符串发送到当前编辑窗口,一般用于在用户作出最终的选择之后,把相应的字符串发送出去。
voidsel1dPreeditsng(constQStringpreeditString,inteursorPosition,intselectionLength=0)
把当前正在编辑的字符串发送给当前编辑窗口。
为了使输入法成为系统级输入法,在这个类中还需要实现输入法安装/卸载函数,这样系统中才会有全局的输人法模块,输入法才能工作。
install和release输入法的函数,就是通过调用QWSServer类中的成员函数来实现的。QWSServer::
setCurrentInputMethod这个函数为当前的Qt/E安装一个输入法,如设置拼音输入法:
QWSServer::setcurrentInputMeth0d(pinyin)
如果把参数设置为NULL,就是卸载输入法。输入法安装完成之后,输入法类中就可以接收到键盘事件了,拼音输入法的具体流程见图4。
图4拼音输入法按键处理流程
最终拼音输入法在三星S3C2440平台上运行的界面见图5。
图5运行结果
3结语
本文基于三星S3C2440平台,实现了基于Qt/E4。5的拼音输入法,并重点阐述了Qt/E的中文输入法原理,在这个基础上可以比较容易地开发出其他的中文输入法。
输入法 设计 实现 中文 Linux Qt 嵌入式 基于 相关文章:
- 嵌入式系统中文输入法的设计(03-02)
- android输入法中的imeoption(09-12)
- 红旗Linux牵手搜狗输入法 带给用户无拘无束输入体(09-12)
- 基于FPGA的DSP设计方法(08-26)
- 电力电子装置控制系统的DSP设计方案(04-08)
- 基于DSP Builder的VGA接口设计(04-10)