大学毕业论文-—基于qte的嵌入式中文输入法的设计与实现.doc
《大学毕业论文-—基于qte的嵌入式中文输入法的设计与实现.doc》由会员分享,可在线阅读,更多相关《大学毕业论文-—基于qte的嵌入式中文输入法的设计与实现.doc(33页珍藏版)》请在咨信网上搜索。
基于Qt/E的嵌入式中文输入法的设计与实现 毕业设计论文 基于Qt/E的嵌入式中文输入法的设计与实现 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名: 日 期: 指导教师签名: 日 期: 使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名: 日 期: 摘 要 随着嵌入式系统的迅猛发展,嵌入式系统广泛地运用于各个领域中,如:智能家居、手持设备,工业系统等诸多领域。嵌入式系统的资源有限,对资源十分敏感,因此要求嵌入式GUI必须占用十分少的系统资源,而目前应用于嵌入式系统中的中文输入法都占用很多的资源,导致系统运行缓慢,很是影响用户的体验。因此,目前国内外的用户都殷切盼望出现一种系统级的、占用系统资源少的、轻量级的嵌入式中文输入法。诺基亚公司开发了一款面向嵌入式系统的Qt版本:Qt/E,是当前嵌入式GUI开发者比较青睐的开发工具,广泛运用于手持电子设备的开发中。然而,目前国内外在Qt/E平台下开发的嵌入式中文输入法,是基于X lib库的,占用很多的系统资源,不是非常人性化。 基于上述背景,本文开发了一种轻量级的中文输入法,该中文输入法是基于Qt/E平台的。该输入法具有良好的移植性和超强的扩展性的,然而它没有增加系统的开销,使用户可以方便,快捷地输入中文汉字、英文字母和各种标点符号。 本文首先阐述了开发嵌入式中文输入法的意义以及研究现状,接着介绍了需要用到的几个相关的技术,最后介绍了软件的设计和实现的各个阶段的主要工作和相关文档。 关键词:嵌入式;Qt/E;中文输入法 Abstract With 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, ask 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 system 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 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 method 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 status, 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 绪论 1 1.1 课题研究的意义 1 1.2 嵌入式中文输入法的研究现状 1 1.3 课题研究内容及目标 2 1.3.1 课题研究的内容 2 1.3.2 课题研究的目标 2 1.3.3 开发平台的选择 2 2 相关技术概述 3 2.1 交叉编译简介 3 2.2 Qt简介 3 2.3 Qt/E简介 3 2.4 Vim简介 4 3 系统需求分析 6 3.1 需求分析的目的 6 3.2 需求分析的地位与作用 6 3.3 系统应该满足的功能 6 4 系统设计 8 4.1 搭建Qt/E开发环境 8 4.2 交叉编译环境的搭建 11 4.3 输入法设计 11 4.3.1 输入法的原理 12 4.3.2 输入法流程图 12 4.3.3 关键模块介绍 13 5 系统安装及演示 20 5.1 系统安装 20 5.2 系统运行截图 21 5.2.1 输入法悬浮窗截图 21 5.2.2 中文输入截图 22 5.2.3 小写英文输入截图 23 5.2.4 大写英文输入截图 24 6 结论 26 参考文献 27 致 谢 28 基于Qt/E的嵌入式中文输入法的设计与实现 1 绪论 1.1 课题研究的意义 (1)嵌入式产业快速的发展 当今社会,嵌入式产业的高速发展,使嵌入式产品广泛运用于各个领域中,如:智能家电,车载GPS,手持设备,等等领域,嵌入式产品已经成为人们生活中离不开的一部分。嵌入式系统没有一个明确的定义,目前业内专家学者一致比较认可的定义是:嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应于应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。从定义可知,嵌入式系统也是一种计算机系统,是针对某一应用的专用计算机系统,嵌入式系统可以定制,因此,嵌入式系统的发展很快。 (2)输入法在人机交互中必不可少 GUI是人机交互不可缺少的部分,一个产品GUI的好坏往往决定了这个产品的优劣,而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。一个良好的GUI肯定要有一款人性化的输入法。嵌入式设备的发展趋势中,重要的一点是要低功耗,尽可能的减少系统的开销,因此嵌入式设备的输入法也需要在保持功能的前提下,将系统开销降低最低。Qt的跨平台性非常良好,目前,大部分嵌入式GUI用Qt开发的。 1.2 嵌入式中文输入法的研究现状 嵌入式的迅猛发展,目前,在手持设备的移动终端中,广泛采用以液晶触摸显示屏实现的人性化的人机交互式GUI。人机交互GUI,在不同应用领域的场合,对人机GUI的要求也不尽相同,一些情况下,只要求显示和选择一些简单的结果和参数,而在大部分移动信息终端中,要求字符的输入,有些智能终端中不仅要求有英文,数字的输入,更需要中文汉字的输入。 目前国内外的嵌入式中文输入法,都是在Qt/E平台下应用和开发的,在这平台下应用的,主要有两种嵌入式中文输入法: (1)其中一种输入法是移植一般PC机Windows系统下,现有的中文输入法,该输入法是基于Qt-X11的,移植了该中文输入法到嵌入式设备,但该输入法需要Windows系统下的X lib库的支持,这会导致系统需要很大的系统资源,很是影响系统的运行效率。 (2)另外一种输入法是使用了Qt/E平台自带插件的方法,但该输入法需要一个桌面系统来管理该输入法,为了管理该输入法,往往移植了Qtopia这个Qt/E下的桌面系统来管理该嵌入式中文输入法,但是,一般的手持设备是不需要桌面管理系统的,该嵌入式中文输入法给这类设备带来了不必要的额外的开销,造成了系统资源的严重浪费。 1.3 课题研究内容及目标 1.3.1 课题研究的内容 本课题主要讨论了一种基于Qt/E的嵌入式中文拼音输入法的研究与实现的方法。课题的主要研究的内容是:Qt/E开发环境的搭建,嵌入式现状的分析,交叉编译环境的搭建,Qt/E体系结构的研究,中文输入法的实现,输入法安装到目标板的实现。 1.3.2 课题研究的目标 针对以上情况,决定组建一个界面友好,功能完善的基于Qt/E嵌入式中文拼音输入法,该输入法可以实现中英输入的切换,实现中文,英文,数字及常用标点符号的输入,输入法最大限度地实现了易移植性和易操作性。输入法运行稳定、安全可靠。 1.3.3 开发平台的选择 本系统将在Linux系统里,用QtDesigner4作为界面设计工具,Vim作为开发环境,arm-linux-gcc-4.4.3作为交叉编译器,Qt为开发语言,运行环境为Qt/E。具体技术将在下一章中介绍。 2 相关技术概述 2.1 交叉编译简介 交叉编译,通俗的讲就是在一个平台上生成另一个平台上的可执行的代码。所谓的平台,实际上包含两个概念:体系结构、操作系统。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,常说的x86 Windows平台实际上是Intel x86体系结构和Windows for x86操作系统的统称;而x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的简称。 嵌入式设备一般对系统资源比较敏感,不能运行软件的开发环境,只执行程序,嵌入式设备叫做目标机;一般的pc机上运行开发环境和编译器,pc机叫做宿主机。在宿主机平台上开发程序,并在这个平台上运行交叉编译器,编译的程序;而由交叉编译器生成的程序将在目标平台上运行。 伴随着以计算机技术、通讯技术为主的信息技术的飞速发展和互联网的广泛应用,计算机,通讯,消费电子,三者合一将成为必然趋势。信息家电,手持设备,移动设备等嵌入式产品的迅速发展,使得嵌入式软件开发再度成为一个研究热点。 由于嵌入式设备的性能局限,往往不能通过本机编译得到所需软件的可执行程序。因此,以Linux为主机操作系统,搭配一个交叉编译系统,为嵌入式设备生成可执行程序已成为现在日益流行的编译嵌入式软件的解决方案。而开放源码的编译器GCC,经过多年的发展,已能支持几乎所有知名厂商的处理器,是嵌入式软件开发中理想的交叉编译器。 2.2 Qt简介 Qt是诺基亚公司开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。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 Linux ,是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 系统,大大节省了许多的不必要的系统开销,需要在GUI展示的图像,直接写入了framebuffer,节省了系统资源,大大加快了显示速度。这是Qt/E的最大优势。 两者的体系结构差别,如图2-1所示: 图2-1 Qt/E和Qt/X11体系架构对比 因此,Qt/E具有服务端层,这一层主要负责监听系统的事件,如:主要是keyboard和mouse事件,移动终端输出事件,管理域,管理top窗口,管理光标和管理屏幕保护程序等等诸多功能。系统被触发产生的keyboard和mouse事件,首先就传给服务端 层,然后服务端再根据具体的实际情况把以上事件分派给,相对应的应用程序和软件。 2.4 Vim简介 Vim是Linux系统下最常用的文本编辑器,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的发展很迅速,在这之后,Vim 加入了不计其数的新功能。作为第一个里程碑的是 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,该版本合并了 Vim 7.1 以来的所有修正补丁,并且加入了脚本的浮点数支持。 3 系统需求分析 3.1 需求分析的目的 需求分析就是要明确需求方和开发放需要开发一个什么样的产品才能满足客户的需求,即明确“需要干什么”,不需要知道“怎么干”。 本系统要实现的是一个用于嵌入式GUI的中文拼音输入法,因为要适用于嵌入式平台下,因此该输入法应占用较少的系统资源,输入法界面要美观,输入要方便,中英输入法切换要方便。 3.2 需求分析的地位与作用 需求分析是开发软件是否成功的决定因素。软件项目中大多数的问题都是因为需求分析不当或者是需求分析考虑不周全而导致的。在软件需求分析的过程中,导致问题的出现主要包括以下方面,包括用户的需求不明确,需要实现的功能不明确,、需求的文档不是很完善等,都可能造成产品开发的过程中的出现很多困难。软件需求分析,虽然是软件开发整个周期的开始阶段,但也是软件开发整个周期中最为关键的一个阶段,关系到项目开发成败的一个关键步骤。 3.3 系统应该满足的功能 通过调查研究显示,一个良好的输入法不仅仅要使用户输入起来方便,更需要安全、可靠、高效的系统支持。本输入法的要求是: (1)要求具有良好的界面。 (2)占用系统资源少。 (3)输入方便。 本系统需要实现的功能是:中文,大小写英文,常用标点符号的输入,具有软键盘,并支持触摸屏,具体功能模块如图3-1所示: 图3-1 系统功能模块图 4 系统设计 4.1 搭建Qt/E开发环境 在进行开发之前,首先决定的第一个问题就是,该使用什么开发环境来编写该系统? 目前常见的嵌入式GUI,主要有Qt,GTK+几种工具,Qt的移植性更强,基于此,本系统采用Qt来开发。 Qt是诺基亚开发的一个跨平台性很强的基于C++图形用户GUI开发库。开发语言为C++。有很多的有优点,如:具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档。 移植步骤: (1)准备好如下源码包: Qt/E源码包:qt-embedded-linux-opensource-src-4.5.0.tar.bz2 Qt-x11源码包:qt-x11-opensource-src-4.5.0.tar.bz2 触摸屏源码包:tslib-1[1].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 ”指明刚才编译出来触摸屏的库文件及头文件存放路径。“-qt-mouse-tslib”表示将使用触摸屏。 编译完成后,安装时,最关键的步骤还是设置环境变量 具体的环境变量如图4-4所示: 图4-4 Qt/E4.5.0环境变量 (5)移植相关库文件至开发板 首先准备一个文件系统,根据友善提供的文档制作了一个文件系统,路径为/opt/rootfs, 其中rootfs就是根文件系统。 把编译生成的库文件及配置文件复制至开发板上,用NFS方式挂载文件系统,把目标库文件等下载到开发板。 需移植到开发板的文件如图4-5所示: 图4-5 需移植到开发板的文件 移植如上文件到开发板后,编辑开发板/etc/profile,用来在开发板上设置环境变量,具体的环境变量如图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,draw 依次选择后进行测试,同时终端下出现拖曳后的取点数据 (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服务,并去掉ipchains和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完成内核及根文件系统从内存到Flash的烧写。最后需要在宿主机安装主编译器 Arm-linux-gcc,用来交叉编译应用程序。 4.3 输入法设计 4.3.1 输入法的原理 Qt/E是C/S结构,在服务端负责监听系统消息,比如:keyboard和mouse消息,而中文输入法是一个全局性的模块,所以在Qt/E中,把中文输入法的设计放在了服务层。输入法是属于服务层的一部分。 QWSInputMethod是Qt/E的一个类,其是中文输入法的基类,在QWSInputMethod这个基类中定义了一些函数用以支持输入法的程序的设计,本文从此基类中继承出了一个中文输入法的类,在该类中处理keyboard和mouse事件,把接收到的keyboard事件按照用户所需要输入的汉字的拼音,从字库中查找出之对应的汉字,词组,或者是一个汉语短语,发送给当前的显示窗口,或者把用户最后选择的汉字、短语或词组发送到当前的显示窗口。需定义一个输入法窗口来显示用户当前的输入。 字符,汉字,英文的输入一般分为三大步骤: (1)开始准备输入 当用户在软键盘上按下第一个keyboard按键时,输入法会自动创建出输入法的上下文,输入法上下文包含keyboard输入字符。 (2)选择编辑 当有任何一个新的keyboard按键被按下的时候,输入法就会主动尝试着去创建与keyboard输入相对应的中文字符,英文字符和数字等等,此时,激活了中文输入法的上下文,用户可以自由的在中文输入法的上下文中前后移动光标。 (3)输入完成 当用户认为输入已经完成的时,用户会选择以某种方式来选择最终的字符串,通常是使用keyboard按键,或者mouse点击,用户最终所选择的字符串会被发送到当前的编辑窗口。 4.3.2 输入法流程图 本输入法的流程是:用户输入,软键盘得到响应,系统判断是否处于中文输入状态,是:进入中文输入流程,否:进入英文输入流程,具体流程图如图4-8所示: 图4-8 输入法流程图 4.3.3 关键模块介绍 (1)中文输入模块 中文输入模块实现了中文输入功能,用户选择了中文输入状态,点击软键盘,输入拼音,通过相应的编码,查找到字库中与之对应的汉字,显示在编辑框中,用户选择所需输入的汉字,中文输入完成。 系统中实现中文输入的接口为: bool GetKey(int,int); 其中的关键代码为: if(k == Qt::Key_Space){ if(m_pinyin_frame->m_ime_info.candidates_on_page>0) { 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::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 here\n"); String::iterator pos=m_pinyin_frame->m_ime_info.pinyin.end()-1; m_pinyin_frame->m_ime_info.pinyin.erase(pos); m_pinyin_frame->search(); 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_frame->m_engine.save_table(); } (3)输入窗口界面实现 输入窗口界面由软键盘,中英文输入法的切换按键,显示拼音的输入框,显示汉语字符的显示框组成。 软键盘要实现,汉语拼音,大写英文,小写英文,常用标点符号的输入,因此,软键盘的体积比较大,而一般手持设备的显示屏都比较小,基于此,需要一键多用,来节省软键盘的空间,把按键上需要显示的文本写在一个XML文档中,通过读取该文档来显示按键上的文本:例如:<key nr="17" text="3" shift="#" caps="3" alt="" keycode="51" unicode="51" upcode="35" />,3键对应序号为nr=”17”,初始化时PushButton 3 键text设置为“3”,当按下“shift”时,text设置为“#”。 软键盘界面如图4-9所示: 图4-9 软键盘界面 因为没有桌面管理系统,本输入法设计了一个浮动窗,用于打开软键盘和中英文输入切换,如图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,%d\n",rect.width(),rect.height()); int 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 size unsigned int width = 160; the first row - pinyin inputed QFontMetrics metric=painter.fontMetrics(); QRect 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 chinese/english indicator with pinyin inputed painter.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; 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); 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类的一个成员函数,setCurrentInputMethod函数的参数设置为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- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学毕业 论文 基于 qte 嵌入式 中文 输入法 设计 实现
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文