收藏 分销(赏)

基于qte的嵌入式中文输入法的设计与实现-毕设论文.doc

上传人:胜**** 文档编号:3010643 上传时间:2024-06-13 格式:DOC 页数:33 大小:948KB
下载 相关 举报
基于qte的嵌入式中文输入法的设计与实现-毕设论文.doc_第1页
第1页 / 共33页
基于qte的嵌入式中文输入法的设计与实现-毕设论文.doc_第2页
第2页 / 共33页
基于qte的嵌入式中文输入法的设计与实现-毕设论文.doc_第3页
第3页 / 共33页
基于qte的嵌入式中文输入法的设计与实现-毕设论文.doc_第4页
第4页 / 共33页
基于qte的嵌入式中文输入法的设计与实现-毕设论文.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、基于Qt/E的嵌入式中文输入法的设计与实现毕业设计论文基于Qt/E的嵌入式中文输入法的设计与实现毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即

2、:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 摘 要随着嵌入式系统的迅猛发展,嵌入式系统广泛地运用于各个领域中,如:智能家居、手持设备,工业系统等诸多领域。嵌入式系统的资源有限,对资源十分敏感,因此要求嵌入式GUI必须占用十分少的系统资源,而目前应用于嵌入式系统中的中文输入法都占用很多的资源,导致系统运行缓慢,很是影响用户的体验。因此,目前国内外的用户都殷切盼望出现一种系统级的、占用

3、系统资源少的、轻量级的嵌入式中文输入法。诺基亚公司开发了一款面向嵌入式系统的Qt版本:Qt/E,是当前嵌入式GUI开发者比较青睐的开发工具,广泛运用于手持电子设备的开发中。然而,目前国内外在Qt/E平台下开发的嵌入式中文输入法,是基于X lib库的,占用很多的系统资源,不是非常人性化。基于上述背景,本文开发了一种轻量级的中文输入法,该中文输入法是基于Qt/E平台的。该输入法具有良好的移植性和超强的扩展性的,然而它没有增加系统的开销,使用户可以方便,快捷地输入中文汉字、英文字母和各种标点符号。本文首先阐述了开发嵌入式中文输入法的意义以及研究现状,接着介绍了需要用到的几个相关的技术,最后介绍了软件

4、的设计和实现的各个阶段的主要工作和相关文档。关键词:嵌入式;Qt/E;中文输入法AbstractWith the rapid development of embedded system, the embedded system is widely used in many fields, such as, intelligent household, handheld devices, industrial system, etc. Embedded system limited resources, is very sensitive to resources, therefore, as

5、k embedded GUI must occupy little system resources, and currently applied to the Chinese input method embedded system is take a lot of resources, cause the system running slowly, very user experience is influence. Therefore, the users at home and abroad are anxious appear a system level, occupies sy

6、stem resources less, lightweight embedded Chinese input method. Nokia has developed a paragraph of embedded system oriented version: Qt/E series, is the current embedded GUI developers prefer development tools, widely used in the development of portable electronics. However, both at home and abroad

7、in Qt/E the workbench development embedded Chinese input method, is based on the X the lib library, take a lot of system resources, not very humane. Based on the background, this paper developed a lightweight Chinese input method, this Chinese input method is based on the Qt/E platform. The input me

8、thod has good portability and strong expansibility, but it has not increased system overhead, the user can convenient, quick to enter Chinese characters, English letters and various punctuation. This article elaborates the significance of developing embedded Chinese input method and the research sta

9、tus, then introduces the need to use the technology of several related, and finally introduces software design and implementation of the main stages working and related documents .Key words : embedded;qt/e;chinese input metho目 录1 绪论11.1 课题研究的意义11.2 嵌入式中文输入法的研究现状11.3 课题研究内容及目标21.3.1 课题研究的内容21.3.2 课题研

10、究的目标21.3.3 开发平台的选择22 相关技术概述32.1 交叉编译简介32.2 Qt简介32.3 Qt/E简介32.4 Vim简介43 系统需求分析63.1 需求分析的目的63.2 需求分析的地位与作用63.3 系统应该满足的功能64 系统设计84.1 搭建Qt/E开发环境84.2 交叉编译环境的搭建114.3 输入法设计114.3.1 输入法的原理124.3.2 输入法流程图124.3.3 关键模块介绍135 系统安装及演示205.1 系统安装205.2 系统运行截图215.2.1 输入法悬浮窗截图215.2.2 中文输入截图225.2.3 小写英文输入截图235.2.4 大写英文输入

11、截图246 结论26参考文献27致 谢28 基于Qt/E的嵌入式中文输入法的设计与实现1 绪论 1.1 课题研究的意义(1)嵌入式产业快速的发展当今社会,嵌入式产业的高速发展,使嵌入式产品广泛运用于各个领域中,如:智能家电,车载GPS,手持设备,等等领域,嵌入式产品已经成为人们生活中离不开的一部分嵌入式系统没有一个明确的定义,目前业内专家学者一致比较认可的定义是:嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应于应用系统对功能可靠性成本体积功耗等有严格要求的专用计算机系统从定义可知,嵌入式系统也是一种计算机系统,是针对某一应用的专用计算机系统,嵌入式系统可以定制,因此,嵌入式

12、系统的发展很快。(2)输入法在人机交互中必不可少GUI是人机交互不可缺少的部分,一个产品GUI的好坏往往决定了这个产品的优劣,而嵌入式GUI具有下面几个方面的基本要求:轻型占用资源少高性能高可靠性便于移植可配置等特点一个良好的GUI肯定要有一款人性化的输入法嵌入式设备的发展趋势中,重要的一点是要低功耗,尽可能的减少系统的开销,因此嵌入式设备的输入法也需要在保持功能的前提下,将系统开销降低最低。Qt的跨平台性非常良好,目前,大部分嵌入式GUI用Qt开发的。1.2 嵌入式中文输入法的研究现状嵌入式的迅猛发展,目前,在手持设备的移动终端中,广泛采用以液晶触摸显示屏实现的人性化的人机交互式GUI。人机

13、交互GUI,在不同应用领域的场合,对人机GUI的要求也不尽相同,一些情况下,只要求显示和选择一些简单的结果和参数,而在大部分移动信息终端中,要求字符的输入,有些智能终端中不仅要求有英文,数字的输入,更需要中文汉字的输入。目前国内外的嵌入式中文输入法,都是在Qt/E平台下应用和开发的,在这平台下应用的,主要有两种嵌入式中文输入法:(1)其中一种输入法是移植一般PC机Windows系统下,现有的中文输入法,该输入法是基于Qt-X11的,移植了该中文输入法到嵌入式设备,但该输入法需要Windows系统下的X lib库的支持,这会导致系统需要很大的系统资源,很是影响系统的运行效率。(2)另外一种输入法

14、是使用了Qt/E平台自带插件的方法,但该输入法需要一个桌面系统来管理该输入法,为了管理该输入法,往往移植了Qtopia这个Qt/E下的桌面系统来管理该嵌入式中文输入法,但是,一般的手持设备是不需要桌面管理系统的,该嵌入式中文输入法给这类设备带来了不必要的额外的开销,造成了系统资源的严重浪费。1.3 课题研究内容及目标1.3.1 课题研究的内容本课题主要讨论了一种基于Qt/E的嵌入式中文拼音输入法的研究与实现的方法。课题的主要研究的内容是:Qt/E开发环境的搭建,嵌入式现状的分析,交叉编译环境的搭建,Qt/E体系结构的研究,中文输入法的实现,输入法安装到目标板的实现。1.3.2 课题研究的目标针

15、对以上情况,决定组建一个界面友好,功能完善的基于Qt/E嵌入式中文拼音输入法,该输入法可以实现中英输入的切换,实现中文,英文,数字及常用标点符号的输入,输入法最大限度地实现了易移植性和易操作性。输入法运行稳定、安全可靠。1.3.3 开发平台的选择本系统将在Linux系统里,用QtDesigner4作为界面设计工具,Vim作为开发环境,arm-linux-gcc-4.4.3作为交叉编译器,Qt为开发语言,运行环境为Qt/E。具体技术将在下一章中介绍。2 相关技术概述2.1 交叉编译简介交叉编译,通俗的讲就是在一个平台上生成另一个平台上的可执行的代码。所谓的平台,实际上包含两个概念:体系结构、操作

16、系统。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,常说的x86 Windows平台实际上是Intel x86体系结构和Windows for x86操作系统的统称;而x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的简称。嵌入式设备一般对系统资源比较敏感,不能运行软件的开发环境,只执行程序,嵌入式设备叫做目标机;一般的pc机上运行开发环境和编译器,pc机叫做宿主机。在宿主机平台上开发程序,并在这个平台上运行交叉编译器,编译的程序;而由交叉编译器生成的程序将在目标平台上运行。伴随着以计算机技术、通讯

17、技术为主的信息技术的飞速发展和互联网的广泛应用,计算机,通讯,消费电子,三者合一将成为必然趋势。信息家电,手持设备,移动设备等嵌入式产品的迅速发展,使得嵌入式软件开发再度成为一个研究热点。 由于嵌入式设备的性能局限,往往不能通过本机编译得到所需软件的可执行程序。因此,以Linux为主机操作系统,搭配一个交叉编译系统,为嵌入式设备生成可执行程序已成为现在日益流行的编译嵌入式软件的解决方案。而开放源码的编译器GCC,经过多年的发展,已能支持几乎所有知名厂商的处理器,是嵌入式软件开发中理想的交叉编译器。2.2 Qt简介Qt是诺基亚公司开发的一个跨平台的C+图形用户界面应用程序框架。它提供给应用程序开

18、发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,最有很强的扩展性,并且允许真正的组件编程。从1996年,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础。 Qt 具有下列优点: 优良的跨平台特性,面向对象, 丰富的 API,支持 2D/3D 图形渲染,支持 OpenGL ,大量的开发文档 ,XML支持 ,Webkit引擎的集成,可以实现本地界面与Web内容的无缝集成 。2.3 Qt/E简介Qt/E,全称为Qt for Embedded,是Qt面向嵌入式开发的一个版本, 通常所说的Qt是Qt for x11 Li

19、nux ,是Qt面向pc机的一个版本,Qt for x11 Linux和 Qt for Embedded Linux 最大的差别,在于二者要显示界面的内容,所依赖的显示基础不同,这导致了两者在体系结构上的根本差异。Qt for x11 Linux:底层的显示技术构建在Window 系统之上,完全依赖于Windows系统,在下层调用了X Lib的系统方法来显示界面上的图像。Qt for embedd linux:没有构建在Window系统之上,而是构建在了Linux系统下的framebuffer之上,把在人机GUI上需要展示的元素写入framebuffer。因为在嵌入式设备上省略了X 系统,大大

20、节省了许多的不必要的系统开销,需要在GUI展示的图像,直接写入了framebuffer,节省了系统资源,大大加快了显示速度。这是Qt/E的最大优势。两者的体系结构差别,如图2-1所示:图2-1 Qt/E和Qt/X11体系架构对比因此,Qt/E具有服务端层,这一层主要负责监听系统的事件,如:主要是keyboard和mouse事件,移动终端输出事件,管理域,管理top窗口,管理光标和管理屏幕保护程序等等诸多功能。系统被触发产生的keyboard和mouse事件,首先就传给服务端 层,然后服务端再根据具体的实际情况把以上事件分派给,相对应的应用程序和软件。2.4 Vim简介Vim是Linux系统下最

21、常用的文本编辑器,Vim是一个类似于Vi的文本编辑器,Vim是Vi的升级版,Vim在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个。80 年代末,出现了 Vim 的 1.0 版本。最初的目标只是完全复制 vi 的功能,那个时候的 Vim 是Vi IMitation(模拟)的简称。1991 年 Vim 1.14 版被 Fred Fish Disk #591 这个 Amiga 用的免费软体集所收录。1992 年 1.22 版本的 Vim 被移植到了 UNIX 和 MS-DOS 上。从此,Vim 的全名就正式变成 Vi Improved。 Vim的发展很迅速,在这之后,V

22、im 加入了不计其数的新功能。作为第一个里程碑的是 1994 年的 3.0 版本加入了多视窗编辑模式(分割视窗)。从那之后,同一屏幕可以显示的 Vim 编辑文件数可以不止一个了。1996 年发布的 Vim 4.0 是第一个利用图型接口(GUI)的版本。1998 年 5.0 版本的 Vim 加入了 highlight(语法高亮)功能。2001 年的 Vim 6.0 版本加入了代码折叠、插件、多国语言支持、垂直分割视窗等功能。2006 年 5 月发布的 Vim 7.0 版更加入了拼字检查、上下文相关补完,标签页编辑等新功能。现在最新的版本是 2008 年 8 月发布的 Vim 7.2,该版本合并了

23、 Vim 7.1 以来的所有修正补丁,并且加入了脚本的浮点数支持。3 系统需求分析3.1 需求分析的目的需求分析就是要明确需求方和开发放需要开发一个什么样的产品才能满足客户的需求,即明确“需要干什么”,不需要知道“怎么干”。本系统要实现的是一个用于嵌入式GUI的中文拼音输入法,因为要适用于嵌入式平台下,因此该输入法应占用较少的系统资源,输入法界面要美观,输入要方便,中英输入法切换要方便。3.2 需求分析的地位与作用需求分析是开发软件是否成功的决定因素。软件项目中大多数的问题都是因为需求分析不当或者是需求分析考虑不周全而导致的。在软件需求分析的过程中,导致问题的出现主要包括以下方面,包括用户的需

24、求不明确,需要实现的功能不明确,、需求的文档不是很完善等,都可能造成产品开发的过程中的出现很多困难。软件需求分析,虽然是软件开发整个周期的开始阶段,但也是软件开发整个周期中最为关键的一个阶段,关系到项目开发成败的一个关键步骤。3.3 系统应该满足的功能通过调查研究显示,一个良好的输入法不仅仅要使用户输入起来方便,更需要安全、可靠、高效的系统支持。本输入法的要求是:(1)要求具有良好的界面。(2)占用系统资源少。(3)输入方便。 本系统需要实现的功能是:中文,大小写英文,常用标点符号的输入,具有软键盘,并支持触摸屏,具体功能模块如图3-1所示:图3-1 系统功能模块图4 系统设计4.1 搭建Qt

25、/E开发环境在进行开发之前,首先决定的第一个问题就是,该使用什么开发环境来编写该系统? 目前常见的嵌入式GUI,主要有Qt,GTK+几种工具,Qt的移植性更强,基于此,本系统采用Qt来开发。Qt是诺基亚开发的一个跨平台性很强的基于C+图形用户GUI开发库。开发语言为C+。有很多的有优点,如:具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档。移植步骤:(1)准备好如下源码包:Qt/E源码包:qt-embedded-linux-opensource-src-4.5.0.tar.bz2Qt-x11源码包:qt-x11-opensource-src-4.5.0.tar.bz2触摸屏源码包

26、:tslib-11.4.tar.gz(2)编译安装tslib-1.4编译tslib-1.4应设置好参数,具体参数如图4-1所示:图4-1 编译tslib参数(3)编译安装Qt-x11-4.5.0安装Qt-x11-4.5.0时,最关键的步骤是设置Qt-x11-4.5.0的环境变量环境变量具体如图4-2所示: 图4-2 Qt-x11-4.5.0环境变量(4)编译安装Qt/E4.5.0编译安装Qt/E4.5.0时,需设置好编译参数,具体参数如图4-3所示:图4-3 编译Qt/E4.5.0参数 “-I/home/mytslib/include -L/home/ mytslib/lib ”指明刚才编译出

27、来触摸屏的库文件及头文件存放路径。“-qt-mouse-tslib”表示将使用触摸屏。编译完成后,安装时,最关键的步骤还是设置环境变量具体的环境变量如图4-4所示:图4-4 Qt/E4.5.0环境变量(5)移植相关库文件至开发板首先准备一个文件系统,根据友善提供的文档制作了一个文件系统,路径为/opt/rootfs, 其中rootfs就是根文件系统。把编译生成的库文件及配置文件复制至开发板上,用NFS方式挂载文件系统,把目标库文件等下载到开发板。需移植到开发板的文件如图4-5所示:图4-5 需移植到开发板的文件移植如上文件到开发板后,编辑开发板/etc/profile,用来在开发板上设置环境变

28、量,具体的环境变量如图4-6所示:图 4-6 移植Qt/E应设置的环境变量设置触摸屏的配置文件ts.conf把# module_raw collie 前面的“”号去掉,然后把该行移至行首,最后配置文件如图4-7所示:图4-7 触摸屏配置文件(6)验证tslib是否移植成功.在开发板终端下执行触摸较正程序:在终端执行 ./ts_calibrate 运行该程序主要是校正触摸屏,运行ts_calibrate后,屏幕将出现五点校正画面,依次点击五点后,将生成触摸屏校正数据文件/etc/pointercal.在开发板终端下执行触摸屏拖曳测试程序:在终端执行./ts_test 运行后屏幕出现drag,dr

29、aw 依次选择后进行测试,同时终端下出现拖曳后的取点数据(7)验证QT4.5.0是否移植成功在宿主机上编译好Qt的例子程序,下载到开发板下并执行:#./application qws font unifont如能正常显示,QT4.5.0移植成功。4.2 交叉编译环境的搭建(1)配置minicom在宿主机Redhat Linux 5.0下新建终端,在终端命令提示符后输入minicom -s,回车,然后按照提示设置波特率115200,8位数据,1位停止位,无控制流,保存退出。(2)TFTP服务的配置在终端中运行setup-system service-tftp增加TFTP服务,并去掉ipchain

30、s和iptables 两项,然后在Firewall configuration,选中no firewall,保存退出,执行service xinetd restart启动TFTP服务。(3)NFS服务器的配置在终端中运行setup-system service-NFS,增加NFS服务,然后编辑文件exports,添加与目标机共享的目录,并设置目标机对目录的访问权限,重新启动NFS服务。(4)Linux内核移植通过并口,宿主机向目标开发板的Flash烧写引导程序vivi,烧写完毕后通过TFTP服务把经过裁剪的Linux内核镜像文件以及根文件系统下载到目标板的RAM中,然后由dnw完成内核及根文件

31、系统从内存到Flash的烧写。最后需要在宿主机安装主编译器 Arm-linux-gcc,用来交叉编译应用程序。4.3 输入法设计4.3.1 输入法的原理Qt/E是C/S结构,在服务端负责监听系统消息,比如:keyboard和mouse消息,而中文输入法是一个全局性的模块,所以在Qt/E中,把中文输入法的设计放在了服务层。输入法是属于服务层的一部分。QWSInputMethod是Qt/E的一个类,其是中文输入法的基类,在QWSInputMethod这个基类中定义了一些函数用以支持输入法的程序的设计,本文从此基类中继承出了一个中文输入法的类,在该类中处理keyboard和mouse事件,把接收到的

32、keyboard事件按照用户所需要输入的汉字的拼音,从字库中查找出之对应的汉字,词组,或者是一个汉语短语,发送给当前的显示窗口,或者把用户最后选择的汉字、短语或词组发送到当前的显示窗口。需定义一个输入法窗口来显示用户当前的输入。字符,汉字,英文的输入一般分为三大步骤:(1)开始准备输入当用户在软键盘上按下第一个keyboard按键时,输入法会自动创建出输入法的上下文,输入法上下文包含keyboard输入字符。(2)选择编辑当有任何一个新的keyboard按键被按下的时候,输入法就会主动尝试着去创建与keyboard输入相对应的中文字符,英文字符和数字等等,此时,激活了中文输入法的上下文,用户可

33、以自由的在中文输入法的上下文中前后移动光标。(3)输入完成当用户认为输入已经完成的时,用户会选择以某种方式来选择最终的字符串,通常是使用keyboard按键,或者mouse点击,用户最终所选择的字符串会被发送到当前的编辑窗口。4.3.2 输入法流程图本输入法的流程是:用户输入,软键盘得到响应,系统判断是否处于中文输入状态,是:进入中文输入流程,否:进入英文输入流程,具体流程图如图4-8所示:图4-8 输入法流程图4.3.3 关键模块介绍(1)中文输入模块中文输入模块实现了中文输入功能,用户选择了中文输入状态,点击软键盘,输入拼音,通过相应的编码,查找到字库中与之对应的汉字,显示在编辑框中,用户

34、选择所需输入的汉字,中文输入完成。系统中实现中文输入的接口为:bool GetKey(int,int);其中的关键代码为:if(k = Qt:Key_Space) if(m_pinyin_frame-m_ime_info.candidates_on_page0) k=1; goto commit; else bKeyProcessed=false; else if(k = Qt:Key_Right|k = Qt:Key_Down) if(!m_pinyin_frame-next_page() bKeyProcessed=false; else if(k = Qt:Key_Left|k = Qt

35、:Key_Up) if(!m_pinyin_frame-prev_page() bKeyProcessed=false; else if( u = 8 & k = Qt:Key_Backspace) if(m_pinyin_frame-m_ime_info.pinyin.size()0) printf(Key_Backspace heren); String:iterator pos=m_pinyin_frame-m_ime_info.pinyin.end()-1; m_pinyin_frame-m_ime_info.pinyin.erase(pos); m_pinyin_frame-sear

36、ch(); bUpdate=true; (2)英文输入模块英文输入模块实现了英文输入功能,用户选择了英文输入模式,点击软键盘,输入字母,系统发送字符到输入框,英文输入完成。系统中实现英文输入的接口为:bool SendKey(int u , int c);关键代码为:QString result = QString(QChar(u); sendCommitString(result); if (m_pinyin_frame-isVisible() m_pinyin_frame-releaseKeyboard(); m_pinyin_frame-resetState(); m_pinyin_fr

37、ame-m_engine.save_table(); (3)输入窗口界面实现输入窗口界面由软键盘,中英文输入法的切换按键,显示拼音的输入框,显示汉语字符的显示框组成。软键盘要实现,汉语拼音,大写英文,小写英文,常用标点符号的输入,因此,软键盘的体积比较大,而一般手持设备的显示屏都比较小,基于此,需要一键多用,来节省软键盘的空间,把按键上需要显示的文本写在一个XML文档中,通过读取该文档来显示按键上的文本:例如:,3键对应序号为nr=”17”,初始化时PushButton 3 键text设置为“3”,当按下“shift”时,text设置为“#”。软键盘界面如图4-9所示:图4-9 软键盘界面因为

38、没有桌面管理系统,本输入法设计了一个浮动窗,用于打开软键盘和中英文输入切换,如图4-10所示:图4-10 浮动窗浮动窗上显示“中”,表示输入法,处于中文输入模式,点击“中”,切换到英文输入模式。点击键盘,输入法弹出软键盘。关键代码为:QPainter painter(this);QFontMetrics metric=painter.fontMetrics();QRect rect = metric.boundingRect(QChar(ZHONG);int width=170;printf(text metric is %d,%dn,rect.width(),rect.height();in

39、t x=PINYIN_X;int y=PINYIN_Y;painter.drawText(x,rect.height(),QChar(m_bEnglishMode?YING:ZHONG);QFrame:paintEvent(e);QPainter painter(this);painter.setClipRect (e-rect ();FIXME: how to get screen sizeunsigned int width = 160;the first row - pinyin inputed QFontMetrics metric=painter.fontMetrics();QRec

40、t rect = metric.boundingRect(QChar(ZHONG);int x=PINYIN_X;int y=PINYIN_Y;painter.drawText(x,rect.height(),QChar(m_bEnglishMode?YING:ZHONG);QPen penGray (QColor(128,128,128);QPen penWhite(QColor(255,255,255);QPen penText (QColor(0,0,0);QPen penPage (QColor(0,0,255);vertical line which seperates chines

41、e/english indicator with pinyin inputedpainter.setPen(penGray);painter.drawLine(x+rect.width()+2,y,x+rect.width()+2,y+rect.height();painter.setPen(penWhite);painter.drawLine(x+rect.width()+3,y,x+rect.width()+3,y+rect.height();int X=x+rect.width()+7;int Y=rect.height();if(m_bMakingPhrase)QRect temp;

42、QString s=QString:fromUtf8(MAKEPHRASE_OPEN);painter.setPen(penText);painter.drawText(X,Y,s);temp = metric.boundingRect(s);X+=temp.width();painter.setPen(penPage);painter.drawText(X,Y,m_ime_info.phrase);temp = metric.boundingRect(m_ime_info.phrase);X+=temp.width();s=QString:fromUtf8(MAKEPHRASE_CLOSE)

43、;painter.setPen(penText);painter.drawText(X,Y,s);temp = metric.boundingRect(s);X+=temp.width()+2;(4)输入法安装卸载功能的实现设计开发输入法,最关键的就是能具有安装功能,这样系统中才会有输入法模块,输入才能工作,实现该功能的接口为:Void XInputMethod:installInputMethod();此接口中,调用setCurrentInputMethod函数为当前的设备安装输入法模块,setCurrentInputMethod函数为Qt/E的QWSServer类的一个成员函数,setCu

44、rrentInputMethod函数的参数设置为NULL,就是卸载输入法模块:关键代码为:void XInputMethod:installInputMethod()XInputMethod* pim = instance(); if (pim) QWSServer:setCurrentInputMethod(pim); void XInputMethod:releaseInputMethod()if (XInputMethodPrivate:pInputMethod) QWSServer:setCurrentInputMethod(NULL); delete XInputMethodPrivate:pInputMethod; XInputMethodPrivate:pInputMethod = NULL; XInputMethod* XInputMethod:inst

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服