华中农业大学本科毕业论文(或设计)
知道细节,这样就可以相对容易的开发出代码可高重用的类(Matthias Dalheimer,2002)。
信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。它以警告的方式报告类型错误,而不会使系统产生崩溃。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号(Johan Thelin,2007)。Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。
你可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和你所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。(这时,只要第一个信号被发射时,第二个信号立刻就被发射。)
总体来看,信号和槽构成了一个强有力的组件编程机制。
如果一个类要使用信号与槽机制,它就必须是从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
11
华中农业大学本科毕业论文(或设计)
(2) Qt元对象系统
Qt中的元对象系统是用来处理对象间通讯的信号/槽机制、运行时的类型信息和动态属性系统。它基于下列三类:QObject类、类声明中的私有段中的Q_OBJECT宏、元对象编译器(moc)。
moc读取C++源文件。如果它发现其中包含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个含有元对象代码的C++源文件。这个生成的源文件可以被类的源文件包含(#include)到或者和这个类的实现一起编译和连接。
除了提供对象间通讯的信号和槽机制之外(介绍这个系统的主要原因),QObject中的元对象代码实现其它特征:
(1) className()函数在运行的时候以字符串返回类的名称,不需要C++编译器中的本地运行类型信息(RTTI)的支持。
(2) inherits()函数返回这个对象是否是一个继承于QObject继承树中一个特定类的类的实例。
(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机上鼠标点击,嵌入式设备的触摸屏点击)控制操作。特色是界面语言支持中文、英文、日文三种语言的显示。
12
华中农业大学本科毕业论文(或设计)
3.1 记事本架构设计
3.1.1 记事本设计需求
记事本可以将目录下的记事本文件以文件名列表的形式显示出来,并可以实现记事本文件的新建、打开、编辑和删除等功能;记事本可以根据文件内容的多少来实现文本的滚动显示,并可以通过软键盘对文本进行编辑等。
(1) 文件列表功能:记事本的文件列表用于显示记事本文件名,并且当记事本文件名过长时进行文件名长度显示的控制。当文件数目多于当前界面显示范围,则出现上下方向的滚动条,可以向上或向下滚动显示文件名。
(2) 文件名选中显示功能:在文件列表上被选中的文件名高亮显示。 (3) 新建文件功能:新建记事本文件时,提示输入文件名,如果没有输入文件名而选择直接进入文件编辑界面,系统则提供默认的文件名用于存储文件。编辑新建文件时,文件名在编辑界面上方显示。
(4) 控制文本编辑格式功能:编辑文件时,文本内容输入到当前界面的右端边界处自动换行,也可以利用键盘操作执行换行动作。输入的文本内容多于当前屏幕显示范围时出现纵向滚动条,随着文本输入滚动显示内容。保存文件后,文件名立即显示在文件列表上。
(5) 打开文件功能:根据文件列表选择打开指定的文件,打开指定文件时,显示打开文件的文件内容在文件编辑界面上,文件内容过多时可以滚动显示,并在文件编辑界面的上方滚动显示打开的文件的文件名。
(6) 文件内容编辑和显示功能:在文件编辑界面上可以对文件的内容进行编辑和修改。如果文件内容多于当前屏幕显示范围的话,出现纵向滚动条,可以滚动显示当前文件的文件内容。
(7) 打开下一个文件功能:在当前打开文件列表界面,若选择“打开一个文件”功能,则显示下一个文件的内容在文件编辑区。
(8) 文件内容修改提示功能:若在打开的文件中对其内容进行了修改,在关闭文件时将会提示文件的内容已经被修改的消息,用户可选择是否保存修改后的内容。
(9) 删除文件功能:可以在文件列表上对指定文件进行删除操作,也可以打开文件后,对打开的文件进行删除操作。选择删除文件操作时,会出现确定文件删除的提示,如果此时放弃删除操作,则文件不会被删除,否则文件将会被彻底删除,即从物理设备上被删除。文件被删除后,文件列表上该文件名被移除。
(10) 软键盘输入功能:软键盘支持英文输入,Cap键支持大小写英文切换,提供Shift键的上下字符切换功能,Enter可以进行回车换行,其ESC键执行软键盘退出功能。软键盘上的按键与物理键盘的按键位置相对应。
13
华中农业大学本科毕业论文(或设计)
(11) 给用户提供友好的图形用户界面,并合理安排界面元素布局,使其交互性好且方便用户操作。
3.1.2 记事本界面设计
记事本主要界面设计:
(1) 文件列表界面:如图2所示,界面大小为320*240。界面上方提供记事本图标和记事本文字标签,中间的显示区域显示记事本文件列表。界面的最下方为两个按钮,左侧的是功能按钮,右侧的是返回按钮,此界面上分别标记为“Option”和“Exit”。文件列表中文件以文件创建时间排序,将要进行操作的文件名高亮显示。
图 2 文件列表界面 Fig. 2 File list interface
(2) 新建文件编辑界面:如图3所示,界面大小为320*240。界面上方显示记事本图标和新建文件的文件名,如果没有输入文件名则不显示。中间的显示区域为文件编辑区,用于接收文本的输入。界面的最下方左侧为功能按钮,右侧的是返回按钮,此界面上分别标记为“Option”和“Save”。
14
华中农业大学本科毕业论文(或设计)
图 3 新建文件编辑界面 Fig. 3 New document editing interface
(3) 打开文件内容显示界面:如图4所示,界面大小为320*240。界面上方显示记事本图标和打开的文件的文件名,中间的显示区域为文件内容显示区,可以接受文本的编辑和修改。界面的最下方左侧为功能按钮,右侧的是返回按钮,此界面上分别标记为“Option”和“Back”。
图 4 文件打开界面 Fig. 4 Documents open interface
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库毕业设计(论文)-基于QT的嵌入式终端应用程序开发--记事本和电(3)在线全文阅读。
相关推荐: