基于qt实现的画图板程序的设计论文内容摘要:

息商务学院 2020 届毕业设计说明书 第 6 页 共 27 页 美 FreeBSD 的广受美誉的 ports 系统 —— Portage 包管理系统。 不同于 APT 和 YUM等二进制文件分发的包管理系统, Portage 是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。 Gentoo 是所有 Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。 ( 3) FreeBSD 并不是一个 Linux 系统,不过 FreeBSD 与 Linux 的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,因此也可以将 FreeBSD 视为一个 Linux 版本来比较。 FreeBSD 拥有两个分支: stable和 current。 顾名思义, stable 是稳定版,而 current 则是添加了新技术的测试版。 FreeBSD 采用 Ports 包管理系统,与 Gentoo 类似,基于源代码分发,必须在本地机器编后后才能运行,但是 Ports 系统没有 Portage 系统使用简便,使用起来稍微复杂一些。 FreeBSD 的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有 Linux 完备,所以并不适合作为桌面系统 [10]。 中北大学信息商务学院 2020 届毕业设计说明书 第 7 页 共 27 页 QT 技术 QT 是用于本地化跨平台应用开发的领先性框架。 QT 应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置。 通过使用 QT,开发小组们从主要的开发平台,可为主要操作系统创建本地化的应用程序。 QT主要特性 QT 是一个跨平台的 C++图形用户界面库,由挪威 TrollTech 公司开发,目前包括 QT/X1基于 Framebuffer 的 QT、快速开发工具 QT Designer 以及国际化工具QT Linguist 等。 人 们所熟知的 Linux 下面的 KDE 环境就是基于 QT 开发而成的。 QT支持 Unix 和 Linux 系统以及 Windows 系统。 QT 的主要特点有:面向对象,很容易扩展,并且允许真正的组件编程; QT 对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性,使用QT类编写的程序可以实现“一次编码,到处编译”,极大的降低了跨平台开发的难度;构件支持,对于对象间通信, QT 没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽”的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间 的通信安全而且高效。 QT 的这些特点使它非常适合于真正的构件编程,同时使各个组件之间的协同工作变得十分简单,并且 QT是直接基于 Xlib 的,不依赖 Motif 工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高 [11]。 QT编程机制简介 信号 /槽机制是 QT 的一个中心特征并且也许是 QT 与其它工具包的最不相同的部分。 在图形用户界面编程中,经常希望一个窗口部件的一个变化被通知给另一个窗口部件。 更一般地,希望任何一类的对象可以和其它对象进行通讯。 较老的工具包使用一种被称作回调的通讯方式来实现 同一目的。 回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。 处理函数在适当的时候调用回调。 回调有两个主要缺点。 首先他们不是类型安全的。 从来都不能确定处理函数使用了正确的参数来中北大学信息商务学院 2020 届毕业设计说明书 第 8 页 共 27 页 调用回调。 因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。 QT的信号与槽机制是不同的。 QT 的信号与槽均以函数形式出现, QT的窗口部件有很多预定义的信号,但也可以通过继承来加入自己的信号。 槽就是一个可以被调 用处理特定信号的函数。 QT 的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。 可以用 connect()函数对需要的信号和槽进行连接。 当对象的内部状态发生改变,信号就被发射。 从某种意义上讲,它们也许对外面的世界感兴趣。 这就是所有的对象通讯时所做的一切。 它不知道也不注意无论有没有东西接收它所发射的信号。 当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图 21)。 信号 /槽机制完全不依赖于任何一种图形用户界面的事件回路。 当所有的槽都返回后发射的信 号也将返回。 信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类 [12]。 信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。 (实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。 )因为签名是一致的,编译器就可以帮助检测类型不匹配。 这样就以以警告的方式报告类型错误,而不会使系统产生崩溃。 信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。 QT 的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来, 槽会在正确的时间使用信号的参数而被调用。 信号和槽可以使用任何数量、任何类型的参数。 它们是完全类型安全的:不会再有回调核心转储( core dump)。 可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和所期望的许多槽相连。 把一个信号和另一个信号直接相连也是可以的。 (这时,只要第一个信号被发射时,第二个信号立刻就被发射。 ) 总体来看,信号和槽构成了一个强有力的组件编程机制。 如果一个类要使用信号与槽机制,它就必须是从 QObject 或 QObject 的子类继承,而且类的定义必须加上 Q_OBJECT 宏。 signals、 slots 和 emit 是 QT特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的 C++编译器。 槽同其他函数一样也具有访问权限,只是槽的访问权限中北大学信息商务学院 2020 届毕业设计说明书 第 9 页 共 27 页 决定了谁可以和它相连,如一个 public slots:包含了任何信号都可以相连的槽。 一个 protected slots: 包含了只有这个类和它的子类的信号才能连接的槽。 这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。 一个 private slots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连 接的权 利[13][14][15]。 图 31 信号和槽的连接原理图 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()函数,这两个函数是用 来通过名中北大学信息商务学院 2020 届毕业设计说明书 第 10 页 共 27 页 称动态设置和获得对象属性的。 ( 5) metaObject()函数返回这个类所关联的元对象。 虽然使用 QObject 作为一个基类而不使用 Q_OBJECT 宏和元对象代码是可以的,但是如果 Q_OBJECT 宏没有被使用,那么这里的信号和槽以及其它特征描述都不会被提供。 根据元对象系统的观点,一个没有元代码的 QObject 的子类和它含有元对象代码的最近的祖先相同。 举例来说就是, className()将不会返回你的类的实际名称,返回的是它的这个祖先的名称。 故强烈建议 QObject 的所有子类使用Q_OBJECT 宏,而不管它们是否实际使用了信号、槽和属性 [16]。 3 开发软硬件环境介绍 Linux 系统上有很多基本的开发工具,通过这些基本开发工具,可构成简单的开发环境。 但在纯命令模式下编辑源代码和调试软件并不方便,特别是开发大型复中北大学信息商务学院 2020 届毕业设计说明书 第 11 页 共 27 页 杂软件。 虚拟机技术 虚拟机应用概述 为了更好的模拟仿真程序在开发板等便携式 Linux 环境下顺利运行,必须选定合适的虚拟机与 Linux 系统,同时在虚拟机的 Linux 系统环境下搭建出合适的交叉编译环境,实行交叉编译的过程。 所谓虚拟 机,顾名思义,就是指一台虚拟的计算机。 它的虚拟的含义,是相对于日常使用的物理计算机来讲的。 物理计算机是实际存在的, CPU、内部存储器和输入 /输出设备是电子计算机的三大核心部件。 硬盘、内存等等,这些设备都可以实实在在地接触到。 而虚拟机,则是一种被虚拟化的技术,虚拟机中的 CPU、内存等硬件设备都看不见,但是却都是可以实际使用的,可以使用虚拟机中的硬盘来存储数据,使用虚拟机中的网卡来连接网络,其实这些功能都是由程序模拟出来的,但是在使用过程中,并没有感觉到和真实的计算机有什么不同,这就是虚拟机技术。 而虚拟机技术最 直接的应用,就是虚拟机软件。 其最大的作用就是在一台普通计算机上模拟出另外一台乃至数台能够单独运行的操作系统,甚至还可以将这几个操作系统连成一个虚拟的局域网络 [21]。 虚拟机 vmware Vmware 稳定性和功能的强大,但是对资源要求比较高。 需要比较多的内存,性能比较强劲的系统的最佳选择。 vmware 的设计思想是用用软件模拟所有的硬件环境,所以性能稳定,客户操作系统无法感觉到自己运行在一个模拟环境里。 只要硬件资源允许,可以运作多个客户操作系统。 对图形和多媒体效果的支持比较好,最新版已经在 一定程度上支持 directX,不过该选项是隐藏的,如果需要使用,可以手工编辑配置文件打开。 目前对 directX 的支持还不是特别成熟,但是已经可用。 对网络的支持也是最好的,有多种模拟网络设备的模式,还可以添加多个虚拟网卡,组建简单的局域网,对学习网络知识很有好处。 不过 vmware 启动就会占用分配给虚拟机的一大块内存,如果只是虚拟一个没有图形界面的 Linux 或 BSD,那么可以。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。