第一范文网 - 专业文章范例文档资料分享平台

毕业论文 基于QT的嵌入式终端应用

来源:用户分享 时间:2025/5/19 9:08:03 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

华中农业大学本科毕业论文(或设计)

到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X windows)。其强大的语言编译器gcc、g++等也可以很容易得到。不但成熟完善、而且使用方便,为嵌入操作系统提供了一个极有吸引力的选择。

Linux已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。

Linux还有以下优点:

(1) Linux可以随意地配置,不需要任何的许可证或商家的合作关系。

(2) 它是免费的,源代码可以得到。这是最吸引人的。毫无疑问,这会节省大量的开发费用。

(3) 它本身内置网络支持。

(4) Linux的高度模块化使添加部件非常容易。

(5) Linux在台式机上的成功,使大家看到了linux在嵌入式系统中的辉煌前景。 嵌入式产品中选择什么样的操作系统极为重要,嵌入式Linux由于其开源特性、实时性好、可移植、内置网络支持等优点在嵌入式领域成为主力军。如今,业界已经达成共识:即嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。

2.2 Qt开发工具简介

2.2.1 Qt主要特性

Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司开发,目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速开发工具Qt Designer以及国际化工具Qt Linguist等。人们所熟知的Linux下面的KDE环境就是基于Qt开发而成的。Qt支持Unix和Linux系统以及Windows系统。

Qt的主要特点有: 面向对象, 很容易扩展, 并且允许真正的组件编程; Qt对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性, 使用Qt类编写的程序可以实现 “一次编码,到处编译”,极大的降低了跨平台开发的难度(丁丁等,2004);构件支持, 对于对象间通信,Qt没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽” 的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。 Qt的这些特点使它非常适合于真正的构件编程, 同时使各个组件之间的协同工作变得十分简单,并且 Qt是直接基于 Xlib的,不依赖 Motif 工具包, 所以它的执行效率比一般的基于平台的代码的执行效率要高。

4

华中农业大学本科毕业论文(或设计)

2.2.2 Qt编程机制简介

(1) Qt系统的信号与槽机制简介

信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件(张娟,张雪兰,2007)。更一般地,我们希望任何一类的对象可以和其它对象进行通讯。

较老的工具包使用一种被称作回调的通讯方式来实现同一目的。回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。处理函数在适当的时候调用回调(倪继利,2006)。回调有两个主要缺点。首先他们不是类型安全的。我们从来都不能确定处理函数使用了正确的参数来调用回调。因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。

Qt的信号与槽机制是不同的。Qt的信号与槽均以函数形式出现,Qt的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。Qt的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。我们可以用connect()函数对需要的信号和槽进行连接。当对象的内部状态发生改变,信号就被发射。从某种意义上讲,它们也许对外面的世界感兴趣。这就是所有的对象通讯时所做的一切。它不知道也不注意无论有没有东西接收它所发射的信号。当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图1)。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。当所有的槽都返回后发射的信号也将返回。信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类(Matthias Dalheimer,2002)。

信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。它以警告的方式报告类型错误,而不会使系统产生崩溃。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号(Johan Thelin,2007)。Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。

你可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和你所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。(这时,只要第一个信号被发射时,第二个信号立刻就被发射。)

总体来看,信号和槽构成了一个强有力的组件编程机制。

5

华中农业大学本科毕业论文(或设计)

如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。signals、slots和emit是Qt特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C++编译器。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个public slots:包含了任何信号都可以相连的槽(Andrew Krause,2007) 。一个protected slots:包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。 一个private slots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。

图 1 信号和槽的连接原理图

Fig. 1 Signal and slot connection scheme

(2) Qt元对象系统

Qt中的元对象系统是用来处理对象间通讯的信号/槽机制、运行时的类型信息和动态属性系统。它基于下列三类:QObject类、类声明中的私有段中的Q_OBJECT宏、元对象编译器(moc)。

moc读取C++源文件。如果它发现其中包含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个含有元对象代码的C++源文件。这个生成的源文件可以被类的源文件包含(#include)到或者和这个类的实现一起编译和连接。

除了提供对象间通讯的信号和槽机制之外(介绍这个系统的主要原因),QObject中的元对象代码实现其它特征:

(1) className()函数在运行的时候以字符串返回类的名称,不需要C++编译器中的本地运行类型信息(RTTI)的支持。

(2) inherits()函数返回这个对象是否是一个继承于QObject继承树中一个特定类的类的实例。

6

华中农业大学本科毕业论文(或设计)

(3) tr()和trUtf8() 两个函数是用于国际化中的字符串翻译。

(4) setProperty()函数和property()函数,这两个函数是用来通过名称动态设置和获得对象属性的。

(5) metaObject()函数返回这个类所关联的元对象。

虽然使用QObject作为一个基类而不使用Q_OBJECT宏和元对象代码是可以的,但是如果Q_OBJECT宏没有被使用,那么这里的信号和槽以及其它特征描述都不会被提供。根据元对象系统的观点,一个没有元代码的QObject的子类和它含有元对象代码的最近的祖先相同。举例来说就是,className()将不会返回你的类的实际名称,返回的是它的这个祖先的名称。故强烈建议QObject 的所有子类使用Q_OBJECT宏,而不管它们是否实际使用了信号、槽和属性(Jonathan Corbet, 2005)。

3 嵌入式终端应用程序之记事本和电子相册架构设计

目前市场上嵌入式手持设备,320*240的解析度基本满足了人们对显示画面大小及图像清晰度的要求,逐渐占领了市场主流。故记事本和电子相册界面大小设定320*240,并且记事本和电子相册均支持键盘控制操作和点击(PC机上鼠标点击,嵌入式设备的触摸屏点击)控制操作。特色是界面语言支持中文、英文、日文三种语言的显示。

3.1 记事本架构设计

3.1.1 记事本设计需求

记事本可以将目录下的记事本文件以文件名列表的形式显示出来,并可以实现记事本文件的新建、打开、编辑和删除等功能;记事本可以根据文件内容的多少来实现文本的滚动显示,并可以通过软键盘对文本进行编辑等。

(1) 文件列表功能:记事本的文件列表用于显示记事本文件名,并且当记事本文件名过长时进行文件名长度显示的控制。当文件数目多于当前界面显示范围,则出现上下方向的滚动条,可以向上或向下滚动显示文件名。

(2) 文件名选中显示功能:在文件列表上被选中的文件名高亮显示。

(3) 新建文件功能:新建记事本文件时,提示输入文件名,如果没有输入文件名而选择直接进入文件编辑界面,系统则提供默认的文件名用于存储文件。编辑新建文件时,文件名在编辑界面上方显示。

(4) 控制文本编辑格式功能:编辑文件时,文本内容输入到当前界面的右端边界处自动换行,也可以利用键盘操作执行换行动作。输入的文本内容多于当前屏幕显示范围时出现纵向滚动条,随着文本输入滚动显示内容。保存文件后,文件名立即显示在文件列表上。

(5) 打开文件功能:根据文件列表选择打开指定的文件,打开指定文件时,显示打开文件的文件内容在文件编辑界面上,文件内容过多时可以滚动显示,并在文件编辑界面的上方滚动显示打开的文件的文件名。

7

搜索更多关于: 毕业论文 基于QT的嵌入式终端应用 的文档
毕业论文 基于QT的嵌入式终端应用.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c155fc18jsm0fvam2h1ob_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top