微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Qt/E的嵌入式Linux中文输入法的设计与实现

基于Qt/E的嵌入式Linux中文输入法的设计与实现

时间:05-30 来源:互联网 点击:

法窗口由中英文切换键、拼音框、汉字显示框和软键盘组成,软键盘的按键类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的中文输入法原理,在这个基础上可以比较容易地开发出其他的中文输入法。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top