基于QT的图像格式转换器设计与实现毕业论文

上传人:仙*** 文档编号:202819296 上传时间:2023-04-23 格式:DOC 页数:58 大小:1.01MB
收藏 版权申诉 举报 下载
基于QT的图像格式转换器设计与实现毕业论文_第1页
第1页 / 共58页
基于QT的图像格式转换器设计与实现毕业论文_第2页
第2页 / 共58页
基于QT的图像格式转换器设计与实现毕业论文_第3页
第3页 / 共58页
资源描述:

《基于QT的图像格式转换器设计与实现毕业论文》由会员分享,可在线阅读,更多相关《基于QT的图像格式转换器设计与实现毕业论文(58页珍藏版)》请在装配图网上搜索。

1、北京邮电大学毕业设计基于QT的图像格式转换器设计与实现摘 要在linux,windows不同平台,利用QT开发工具,实现了对本地图像进行格式转化功能。设计的图像转化软件,具备了一些基本的图像操作,包括查看图片、放大图片、缩小图片、前一张、后一张、图像转化和新建截图等功能。利用QT实现代码复用。使得该软件操作简便,界面整洁。在Linux系统嵌入式环境下基于QT的图像转化设计更具有实用价值。本设计是在Linux和windows下使用QT技术进行GUI设计,利用QTCreator软件编程实现一个图形界面,完成一个简单的图像转化的设计。该设计基于QT集成开发环境,利用系统的函数接口来编程、具有体积小、

2、支持的格式多、系统占用资源少、支持各种常用格式的转化等功能,还可以实现代码复用,实现跨平台的效果。此次开发设计在Windows 7系统 和Ubuntu12.04下,以C+为开发语言,在Qt 4.7.4开发平台上。通过对其开发,深入了解QT开发软件的流程和其强大功能,为后来使用者起借鉴作用。关键词:不同平台;图形用户界面;QT;代码复用Design and implementation of image format converter based on QTABSTRACTIn Linux, windows platform, using QT development tools, imple

3、mentation of the native image format conversion function. Image conversion software design, has some of the basic operation of the image, including view pictures, enlarge, narrow, a picture before, after a, image transformation and new screenshots and other functions. Reuse code by using QT. The sof

4、tware is easy to operate, clean interface.In the embedded Linux system environment design of image transformation based on QT and has more practical value. This design is a GUI design using QT technology in Linux and windows, the realization of a graphical interface using QTCreator software programm

5、ing, to complete a simple image transforming design. The design of the QT integrated development environment based on, programming, has the advantages of small volume, support playback function format conversion, the system takes fewer resources, support a variety of commonly used format using the f

6、unction interface system and Can also achieve code reuse, to achieve cross platform effect.The development of design in the Windows 7 system and Ubuntu12.04, which is developed by C+ language, in the Qt 4.7.4 development platform. Through its development, in-depth understanding of QT software develo

7、pment process and its powerful functions for later reference, user.Keywords: different platform; graphic user interface; QT; code reuseiii北京邮电大学毕业设计目 录摘 要iAbstractii1 绪 论11.1 课题背景11.2 课题研究的目的及意义31.3 嵌入式的现状和前景31.4 QT的历史和最新发展52 QT开发软件的架构和简介72.1 QT的特点与组成72.2 QT开发机制简介93 QT图像格式转化的设计和实现123.1 系统架构分析设计123.1

8、.1 需求分析设计123.1.2 界面的设计与分析133.1.3 软件结构设计153.2 程序的实现193.2.1 使用QT建立GUI开发193.2.2 算法设计和具体功能224 测试环节314.1 QT CREATOR 进行调试314.2 WIN7和UBUNTU12.04平台测试325 总 结35参考文献36致谢37外文资料38对应中文翻译491 绪 论1.1 课题背景今天我们所处的环境信息化发达、计算机网络遍布全球。离开了嵌入式的发展是不可能谈及网络的,这些年来,嵌入式产品发展出多种多样。这就不仅要求其茶品有强大的网络支持功能,还要有低成本、美观的图形界面。而在Linux、Windows等

9、操作系统上具有完备功能的图形设计开发软件成为解决问题的好方案。目前,嵌入式系统是在一个快速发展的时代,激烈的竞争,这种竞争和发展在未来几年将继续发展和激烈。嵌入式系统市场和技术的发展很快,国外技术发展的步伐更加成熟,市场基本形成。国内的发展速度也很快,市场有很大的潜力。在国外的一些发达国家,高水平的硬件,尤其是在嵌入式CPU的处理能力上,从原来的8位到16位再到32位,发展速度很快。掌上电脑、智能设备等新产品的涌入市场,使得产业规模进一步扩大和发展。国内的嵌入式硬件需求基本是靠进口来满足,技术相对较弱。但是,如今国内外都有自己推出的嵌入式系统,都在为自己在这个产业争取一份额而努力。而其中Lin

10、ux以其公开的系统内核源代码而得到广泛的重视和使用,发展前景非常乐观。在国内,大型的嵌入式系统非常少,今后的开发重点可能转向基于Internet的各种信息和嵌入式操作系统领域,包括Internet、网上交易、Iphone和平板电脑等。目前在开发GUI时也会有很多种选择,但是有很少软件可以实现一套代码在几乎不用修改代码便可支持多个操作系统编译。如果不能实现复用代码,要想在另一个系统上实现同样功能,只能舍弃原来的开发代码,进行重新开发。这样会消耗大量的人力和财力,使得原本很成熟的开发成果因此被遗弃。QT在开发时解决了这个问题,我们只需要在不同环境下安装好QT,并把开发好的代码编译一次便可以运行,极

11、大的提高了开发效率,在维护时也方便很多。它还可以发挥每个不同平台的优势,只需引入相应的系统中头文件即可。嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器微处理器、存储器及外设器件和IO端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应

12、用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点: 1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。 2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。 3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。 4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信

13、设备中靠电池供电的嵌入式。系统更是如此,如需要功耗只有mW甚至W级。 嵌入式计算机系统同通用型计算机系统相比具有以下特点:1.嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。2.嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。3.嵌入式系

14、统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。4.嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。5.为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。6.嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。要说嵌入式行业,就要先从嵌入式系统和软件说起。嵌入式系统和软件是指嵌入在硬件中

15、的非PC操作系统和开发工具软件,分为嵌入式操作系统、嵌入式支撑软件、嵌入式应用软件,被称为“驱动系统的灵魂。Qt是1991年奇趣科技公司开发的一款跨平台的C+图形用户界面应用程序框架。它不仅可以开发GUI程序,也可开发非GUI程序,比如控制台工具程序和服务器端程序。Qt是基于C+语言的面向对象框架,使用特殊的代码生成扩展以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增Beautifier、

16、WinRT等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C+代码模块,并对Android支持做出了调整,至此实现了全面支持Android 、iOS、WP。Qt良好的封装机制使得 Qt 的模块化程度非常高,代码可重用性较好,对于用户开发来说是非常方便。 Qt还提供了一种称为signals/slots的安全类型来代替 callback,这Qt creator是全新的跨平台集成开发环境,为QT开发人员的需求量身定制,由于捆绑了最新QT库二进制软件包和附加的开发工具,并作为QT SDK的一部分,Qt creator在单独的安装程序内提供了进行跨平台QT开发所需的全部工具。

17、Qt creator主要是为了帮助新QT用户更快速入门并运行项目,还可提高有经验的QT开发人员的工作效率。使得各个元件 之间的协同工作变得十分简单。因此,学习QT开发软件无论对于开发普通软件人员还是嵌入式开发者都是十分必要的,它还有重要的商业和研究价值,或许不久的将来便可在图形界面开发软件独居榜首。1.2 课题研究的目的及意义随着科学技术的进步,我们的社会越来越丰富多彩,图像的种类也越来越多。在信息技术发展的今天,人类对于图像的依赖也越来越高。米歇尔列举的有“电脑辅助设计、合成全息照相、飞行模拟器、电脑动画、机器人图像识别、射线跟踪、文本图绘、运动控制、虚拟环境防护、磁共振成像、以及多谱感应器

18、等”。对于图像的定位,在社会发展的过程中,发生了翻天覆地的变化。以前的图像,可能是物的附属,或者是价值的附属,都无法按照意指的规则,进行排列组合和格式转化。Qt具有丰富的API包括多达 250 个以上的 C+ 类还提供基于模板的 file、collections、 I/O device、serialization、directory management、date/time 类。甚至还包括正则表达式的处理功能。Qt是诺基亚开发的一个跨平台的C+图形用户界面应用程序框架。它提供给应用程开发者建立艺术级的图形用户界面所需的所有功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程,自从19

19、96年早些时候,Qt进入商业领域,他已经称为全世界范围内数千种成功的应用程序的基础,Qt也是流行的LINUX桌面环境KED的基础。基本上,Qt同XWINDOW上的Motif,OPENWIN,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型的东西,但Qt具有优良的跨平台性、面向对象,丰富的API、大量的开发文档等优点。QtCreator是跨平台的QtIDE,QtCreator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)此IDE能够跨平台运行,支持的系统包括Linux(32位及64位)、MacOSX以及Windows。根据官方描述,QtCrea

20、tor的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务。在功能方面,Qt Creator 包括项目生成向导、高级的 C+ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 QMAKE 构建工具等。尤其是我们在制作软件和网页时候,需要各种各样的不同格式的图片进行装饰,不可能使用单一的图片格式满足用户的所有需求。这时有一款图像转化软件可以满足市场和开发人员的需要。在嵌入式发展飞速的今天,更需要有一款软件可以随时随地的对图像进行处理。特别是在Linux环境下,图形化软件特别

21、少,需要一个可以方便使用和操作的有图形界面的软件。Qt可以实现在windows和linux一次编译多次运行,是市场发展的好趋势。所以今天做一个图形转化程序来验证Qt的良好的实现代码机制和强大的跨平台功能。服务业创造价值,而体验业创造意义。在服务中创造更好的用户体验,可以提升用户价值。Qt 包括一套集成的开发工具,可加快在 X11 平台上的开发。Qt 由于是 KDE 桌面环境的基础,在各个 Linux 社区人尽皆知。几乎 KDE 中的所有功能都是基于 Qt 开发的, 而且 Qt 是全球社区成员用来开发 成千上万的开源 KDE 应用程序的基础。本文运用QT技术在Linux下进行GUI设计,以一个图

22、形界面为例,运用QT creator软件编程,实现一个图像转化软件。1.3 嵌入式的现状和前景嵌入式的现状和前景在未来嵌入式应用软件的开发不仅需要操作系统的支持开发工具而且还需要的强大的开发工具的支持,伴随计算机网络技术的成熟和发展,以及带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样。像智能手机、平板电脑及冰箱,智能家居等嵌入式电子设备的功能不再单一,其结构也更为复杂。为了满足更多应用功能的快速升级,设计师们一方面采用更为先进的嵌入式处理器如32位、64位RISC芯片或者信号DSP处理器增强其处理能力;同时还采用多任务的、实时的编程技术和交叉开发工具技术来控制程序实现

23、的功能复杂性,此外还要简化应用程序设计、保障软件的质量和尽量缩短开发软件的周期。(1)联网成为嵌入式发展的必然趋势为了更好的适应嵌入式分布处理的结构和网络应用上的需求,面向新一代的嵌入式系统要求配备标准的一种或多种网络通信接口才能与之相适应。对于外部联网要求,嵌入设备必需配有通信接口,同时需要TCPIP协议软件支持;同时也需要提供相应的通信网协议软件和物理层驱动软件。为了支持应用软件的特定的编程模式,还需要相应的浏览器和网页支持技术的开发与发展。(2)支持小型电子设备、实现小尺寸、微功耗以及低成本为满足这种特性,使得嵌入式产品设计在一定程度降低处理器的性能,限制一定的内存容量和复用接口芯片。这

24、就相应提高了对嵌入式软件设计技术要求。(3)提供精巧的多媒体人机界面嵌入式设备以后一定会让亿万用户乐于接受,最重要原因之一是它们与使用者之间很强的亲和力,随和的人机交互界面,人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。智能终端产品技术已经非常成熟,如iphone、ipad、Andriod产品、MP3、MP4等等。以Linux为代表的自由软件开始占领比较大的市场,据统计,linux占北美PC服务器25%左右的市场份额,打破了微软Windows一统天下的局面,国内也迅速跟进,开发了红旗Linux等。嵌入式操作系统及其开发平台的市场被普及计算(Pervasive Computing)概念所

25、驱动,发展更为迅速,著名的产品有美国加州的集成系统公司(Integrated Systems Inc)推出的psosystem,占领了极大的市场份额。国内九五期间,由中科院推促并产业化的Hopen嵌入式系统,被列为国家科技攻关项目。基于Linux技术的嵌入式操作系统也已经推出。根据美国VDC(Venture Development Co.)统计数据显示,嵌入式linux的市场规模从2001年的5520万美元,到2006年增长到了3.46亿美元,在未来两年将占嵌入式操作系统市场份额的50%。现今,与嵌入式应用相结合的嵌入式操作系统有VxWorks、Linux、WinCE、 COS-II等,他们各

26、有其特点,VxWorks的特点是可靠性,实时性,可裁剪性, 相比较而言,WINCE是多线性、多任务、全优先的操作系统,是专门针对资源有限而设计,COS-II则是一个基于优先级的实时操作系统,每一个任务必须具有不同的优先级,如果优先级相同,任务将无法区分。而嵌入式Linux更具有优势。归纳起来,嵌入式Linux至少具有以下优势: (1)开放的源码,丰富的软件资源 Linux是自由的操作系统,它的开放源码使用户获得了最大的自由度。Linux上的软件资源十分丰富,每一种通用程序在Linux上都可以找到。 (2)功能强大的内核,性能高效、稳定,多任务 Linux的内核非常稳定,它的高效和稳定性已经在各

27、个领域,尤其在网络服务器领域,得到了事实的验证。Linux内核小巧灵活,易于裁减,这使得它很适合嵌入式系统的应用。 (3)支持多种体系结构,如X86、ARM、MIPS、ALPHA、SPARC等 目前,Linux已经被移植到数十种硬件平台上,几乎支持所有流行的CPU。 (4)完善的网络通讯、图形、文件管理机制 Linux自产生之日起就与网络密不可分,网络是Linux的强项。另外,Linux还支持多种文件和图形系统。 (5)支持大量的周边硬件设备 Linux上的驱动已经非常丰富了,它们支持各种主流硬件设备和最新硬件技术。 (6)大小、功能都可定制 Linux秉承Unix的优秀设计思想,非常灵活,各

28、部分的可定制性都很强。 (7)良好的开发环境,不断发展的开发工具集 Linux有着非常优秀的完整开发工具链,有十几种集成开发环境,其中很多是免费的,大大降低了开发费用。鉴于嵌入式技术的广阔发展前景,技术的推广与普及工作受到了越来越广泛的关。我们要抓住机遇、迎接挑战,在嵌入式发展行业中抢占市场先机,需要所有人共同的努力!1.4 QT的历史和最新发展Qt提供给应用程序开发者建立艺术级别的图形用户界面所需的所有功能。Qt很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的Motif、GTK Openwin,等图形界面库和 Windows 平台上的 MFC,OWL,VCL,AT

29、L 是同类型的东西。Qt 4.6 首次包含了对Symbian平台的支持,并在其所支持的平台中新增了 Windows 7、Apple Mac OS 10.6 (雪豹) 和即将上市的Maemo 6。此外还为实时操作系统QNX 和 VxWorks提供了网络社区支持。对Maemo 5 的支持已进入研发阶段,其技术预览版第二版于2009年12月1日发布。Qt 对 X11 、X86 、ARM 及 Symbian 的支持首次为开发人员创造了使用同一代码库同时针对这多个平台进行开发的机会。能够跨平台分享代码就意味着开发人员所开发的应用程序上市的速度将更快,影响的设备用户群将更广。Qt Mobility项目下的

30、全新Qt API技术预览版也同时发布。这些跨平台的API为开发人员提供了多种功能,如导航类设备的定位功能,以及信息发送和接收、联系人和网络连接管理等。性能提升主要包括:一个经过高度优化、重新编写的 Qt GraphicsView 渲染算法、一个全新的 OpenGL 绘图引擎、WebKit、使用 OpenVG 对 2D 矢量图形的支持,以及对全新 DirectFB 的支持。2013年7月3日,Qt 5.1 正式版发布了,这是 Qt 5.0 发布后经过 6 个月的开发而测试的新版本。主要是修复 5.0 中的 bug,但该版本还包含了很多新特性和一些小改进,详细内容请看 Qt 5.1 launch

31、page。Qt 5.1 绑定了 Qt Creator 2.7.2,可通过一个新的在线安装器来安装,可自动的无缝的更新,同时也提供了一个新版本的 Visual Studio 插件。 最新的QT可以支持MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、Unix/X11 - Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台。添加了更多的功能。市场上的极品飞车和office WPS,Google地球等一些大家熟悉的软件

32、,Qt发展前景很好,也非常容易入手,做出自己喜欢的软件。在开发上可以降低成本,有很广的市场发展前景。(1)跨平台特性,避免重复造车轮写一次源代码,能在不同的系统平台下编译,这个功能很强大,目前,还没有什么软件与它相比。有人说flex build可以跨平台,那么,二者效率不可同日而语,Qt的效率还是不错的。使用Qt这么长时间,如果项目中使用的类不是第三方的,所开发的程序能完美在不同系统,不同体系的平台上运行。如一个监控项目,所开发的程序,除了引用第三方的串口类以外,其它源码不用改动,就可以在不同的平台下编译。即便是第三方的串口类,只是修改了一个条件编译参数,仅此而已。(2)QT本身优良的机制,使

33、用面向组件编程。面向组件的编程,是相对于面向过程和对象编程来说的,面向组件编程更具有优势,什么是面向组件编程呢?打个比方,如果你要建设一个房子,有很多方式,假如建筑材料是砖,水泥,沙子,大梁,楼板等。建造房子时,我们在地基上,必须先拌水泥和沙子,然后把砖一块块地垒成墙,再上大梁,然后铺上楼板,这就是一个面向过程的编程。面积组件的编程就是,建筑材料是做好的一面面墙,屋顶,建成房屋时只需把墙和屋顶组合起来就行了。面向组件的编程是用别人做好的代码块,拿过来直接用,所以编程优势比较明显。QT的类库十分丰富,有几千个不同的API,也就是方法,只要你熟悉这些API的参数用法,就可以直接拿过来用,像连接数据

34、库,QT已经写好常见的数据库操作方法,使用时,不需要再编写,只需要拿过来,直接用就好了。(3)把精力放在核心功能的实现上,而不是源码本身。QT使用了面向组件的编程机制,所利用Qt编程时,能解放出程序员的编码工作量,所以,程序员把精力放在业务的实现就可以了。利用前人的源码,直接实现自己要做的业务。使用QT编程确实大大提高工作效率,并且代码质量也很高,因为调用的方法大都很成熟,这就是编程的微妙之处。(4)能构造出艺术级的界面,设计界面方便。QT设计界面非常精巧,能用源码直接描述,效率很高。在设计界面时,因为有了布局这个概念,设计界面时,大大提高了设计效率。不像VS,写个界面很死板。也许有人说,我可

35、以用界面设计师呀!但不要忽略效率。2 QT开发软件的架构和简介2.1 QT的特点与组成Qt是由一个强大的跨平台开发架构组成的,它提供了大量的容器类,实现了平台无关性的一大特点。Qt中有一个核心类库,它是QT的核心,Qt中所有的应用程序中用到的类都是由此继承而来,这个核心类QtCore。Qt常用的一些类和方法(本次设计用到)QChar 表示的是一个字符的类,在核心QtCore之中。它中有很多常用到的方法,比如,QChar(); / 构造一个空字符,即0 QChar(char ch); / 由字符数据ch构造 QChar(uchar ch); / 由无符号字符数据ch构造 QChar(ushort

36、 code); / 由无符号短整形数据code构造,code是Unicode编码 QChar(short code); /由 短整形数据code构造,code是Unicode编码 QChar(uint code); / 由无符号整型数据code构造,code是Unicode编码 QChar(int code); / 由整型数据code构造,code是Unicode编码 实际使用时很少直接构造 QChar 类的对象,而是把这些构造函数当做类型转换来用,让编译器自动构造所需的QChar类对象。也就是说,在所有需要QChar类作为参数的地方都可以安全地使用各种整数类型。QChar 类提供了很多成员函

37、数,可以对字符的类型进行判断,如:bool isDigit() const; / 判断是否是十进制数字(0 - 9) bool isLetter() const; / 判断是否是字母 bool isNumber() const; / 判断是否是数字,包括正负号、小数点等 bool isLetterOrNumber(); / 判断是否是字母或数字 bool isLower() const; / 判断是否是小写字母 bool isUpper() const; / 判断是否是大写字母 QString 类提供了很多函数用于将字符串转换为数值QString &setNum(int n, int base

38、 = 10); / 整型数QString &setNum(uint n, int base = 10); / 无符号整型数QString &setNum(long n, int base = 10); / 长整型QString &setNum(ulong n, int base = 10); / 无符号长整型数QString &setNum(short n, int base = 10); / 短整型数QString &setNum(ushort n, int base = 10); / 无符号短整型数QString &setNum(double n, char format = g, int

39、 precision = 6); / 高精度浮点数QString &setNum(float n, char format = g, int precision = 6); / 浮点数将浮点数转换为字符串时,format 参数指定转化格式,precision 参数指定转换结果的精度,既有效数组的个数。注意这些函数会改变 QString 对象本身的值,而以下的函数则采用了不同的做法,它们返回一个新的临时对象以供使用QPorint 代表一个坐标点,从属于QtCore库,可以认为是一个整型的横坐标和一个整型的纵坐标的组合,常用的方法包括,构造宽度为width,高度为height的QSize对象。QP

40、oint 类支持以下两种构造方式:QPoint(); / 构造横纵坐标均为 0 的 QPoint 对象 QPoint(int x, int y); / 构造横纵坐标分别为 x 和 y 的 QPont 对象 QPoint(); / 构造横纵坐标均为 0 的 QPoint 对象QPoint(int x, int y); / 构造横纵坐标分别为 x 和 y 的 QPont 对象通过以下成员函数可得到 QPoint 对象中的横纵坐标的引用:int &rx(); / 得到横坐标的引用 int &ry(); / 到到纵坐标的引用 int &rx(); / 得到横坐标的引用int &ry(); / 到到纵坐

41、标的引用 注意这些引用都不是只读的,也就是说可以通过它们直接修改 QPoint。QSize(int width, int height);QFont 代表字体,在QtGui库中实现,可以利用其中方法设置字体属性。QPixmap 代表图像, 也是在QtGui库中实现。可以设置图像参数,加载和保存图像。QPixmap: 代表图像,实现在QtGui库中构造:QPixmap();/构造大小为0的空图像QPixmap(const QSize &size);/构造大小为size的图像,图像数据未初始化QPixmap(int width, int height);/等价于QPixmap(QSize(widt

42、h, height);QPixmap(const QString &fileName, const char *format = 0, Qt:ImageConversionFlags flags = Qt:AutoColor);/从指定的文件中加载图像并生成QPixmap对象/fileName:文件名. format:字符串,表示图像文件的格式,如果为0,将进行自动识别.flags:表示颜色的转换模式图像参数:int depth() const;/颜色深度,即每像素所占的byte(比特)数int width() const;/图像宽度,单位是像素int height() const;/图像高度

43、,单机是像素QSize size() const;/图像的大小,即QSize(width(), height();QRect rect() const;/图像的矩形区域,即QRect(QPoint(0,0), size();加载和保存图像:bool load(const QString &fileName, const char *format = 0, QT:ImageConversionFlags flags = Qt:AutoColor);/从文件中加载图像,返回true表示加载成功,false则表示加载失败bool save(const QString &fileName, const

44、 char *format = 0, int quality = -1) const;/将图像保存到文件, fileName:文件名. format:字符串,表示图像文件的格式,如果为0,自动确定. quality:表示图像保存的质量,质量越低压缩率越大,越不清晰,取值范围为0100,-1表示采用默认值.QIcon 代表图标,在实现QtGui库中,是一系列图像的组合,每个图像代表窗口在某种状态下应该显示的图标。可以构造和添加图像构造:QIcon();/构造一个空图像构成的图标QIcon(const QPixmap &pixmap);/从QPixmap对象构造图标,此时系统会自动产生窗口不同状态

45、下对应的图像,比如窗口在禁用状态下其图标为灰色QIcon(const QString &fileName);/从图像文件构造图标,此时,文件并不是立刻加载,而是当图标要显示时才加载添加图像:void addFile(const &fileName, const QSize &size = QSize(), Mode mode = Normal, State state = Off);/fileName:文件名 size:指定大小mode:指定使用模式,即窗口在何种状态下使用这个图像state:指定使用状态/Mode为QIcon类的成员类型,有以下取值. QIcon:Normal:窗口为使能状态

46、,但未激活 QIcon:Disabled:窗口为禁用状态 QIcon:Active:窗口为激活状态 QIcon:Selected:窗口被选中/QIcon:Off:窗口在关状态 QIcon:On:窗口在开状态QWidget 代表一般的窗口,也是在实现QtGui库中实现的,包含各种各样的窗口,可以设置其隐蔽性,可见性,窗口特征等待。QDialog 对话框设置,QDialog:代表对话框,用来实现那些只是暂时存在的用户界面,是独立的窗口,但通常也有父窗口对话框有模态和非模态两种,非模态对话框的行为和使用方法都类似于普通的窗口,模态对话框则有所不同,当模态对话框显示时,其他窗口将全部进入非激活状态,不

47、能接受键盘和鼠标事件,模态的方式又可分为两种,一种是对整个应用程序模态,这时它的出现将导致程序中的所有窗口失去响应;另一种是对窗口模态,这时仅仅会导致它所在的整个窗口树失去响应它只是表示暂时存在的用户界面,包含模态与非模态两种。另外还有QLabel、QAbstractButton: QPushButton,QCheckBox: QRadioButton:等一些界面显示类,这里不做赘述。2.2 QT开发机制简介信号与槽机制是QT开发时用到的的核心机制。信号和插槽是一种高级接口,应用于对象与对象之间的接口通信,它是QT最常用到的功能,也是QT开发软件区别于其他开发工具的关键。信号和插槽技术是QT自

48、行定义的一种通信机制,它独立于标准的C/C+语言,要想正确地处理信号和插槽,必须借助一个称为MOC(Metia Object Compiler)的QT工具,该工具可以对C+程序进行预处理,同时为高层次的事件处理自动生成所需要的附加代码。Qt的槽信号机制可以实现多个信号与单个插槽连接,单个信号与很多插槽也可以连接,甚至将一个信号与另外一个信号相连接也是可以实现的的,这时无论第一个信号什么时候发射,系统都将立刻发射第二个信号。总之,信号与插槽组成了一个强大的连锁编程机制。在我们所熟知的很多GUI工具包中,窗口小部件(widget)都有一个回调函数,用于响应它们能触发的每个动作,回调函数,通常是一个

49、指向某个函数的指针。但是,在QT中信号和槽机制的开发模式取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。信号和槽机制能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生core dumps。所有从QObject或其子类(例如QWidget)派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的

50、通信机制。可以清晰展现出其实现原理,如图2-1所示图2-1 Qt信号和槽机制关联图Qmake工具介绍。编写和开发多平台的软件是单调乏味的,且出现错误的几率很大,维护艰难更是如此,尤其是当不同的编译器和平台组合需要若干个编译文件时,但是通过Qt提供的qmake工具可以构建出Cross Platform Bulids 跨平台的应用程序。即利用qmake可以根据一个工程文件(.pro)产生不同平台下的Makefile文件。Qmake支持跨平台开发和所谓的影子生成(shadow builds)技术,qmake还易于在不同的配置中切换,此外,它还可以进行调试和发布不同版本的生成,十分方便。嵌入式系统的G

51、UI简介 嵌入式GUI就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统。所以嵌入式GUI不但要有GUI的特征,在实际应用中,嵌入式系统对它来说还有如下的基本要求:占用资源少,高性能,高可靠性,可配置 下面,我们将简要介绍集中常见的嵌入式系统的GUI,并对他们的优缺点进行比较。 1)OpenGUI OpenGUI基于一个用汇编实现的x86图形内核,提供了一个高层的C/C+图形/窗口接口。它和MiniGUI一样,也是使用LGPL许可证。OpenGUI提供了2维绘图原语,消息驱动的API、BMP文件格式支持。OpenGUI功能强大、使用方便。用户甚至可以实现Borland BGI风格

52、的应用程序,或者是QT风格的窗口。OpenGUI支持鼠标和键盘的事件。在Linux上基于Framebuffer3或者SVGALib4实现绘图。Linux下OpenGUI也支持Mesa3D。颜色模型方面,OpenGUI已经支持8、16、32位模型。 由于其基于汇编实现的内核并利用MMX指令进行了优化,OpenGUI运行速度非常快,可以用UltraFast形容,它支持32位的机器,能够在MS-DOS,QNX5和Linux下运行,主要用来在这些系统中开发图形应用程序和游戏。OpenGUI非常稳定,但可移植性因为其内核使用汇编语言实现会受到影响。 2)MiniGUI MiniGUI 是 Linux 控

53、制台上运行的,基于 SVGALib 和 LinuxThread6 库的多窗口图形用户界面支持系统。MiniGUI 采用了类 Win32 的 API 接口, 实现了简化的类 Windows 98 风格的图形用户界面。 MiniGUI也是一个窗口系统,他的主要组成元素是窗口,在这个基础上 MiniGUI 中的窗口可以基本分四类,分别为主窗口、对话框、控件和主窗口中的窗片。MiniGUI 中的主窗口和 Windows 应用程序的主窗口概念类似, MiniGUI 中的每个主窗口对应于一个单独的线程,通过函数调用可建立主窗 口以及对应的线程r qmake将会遍历目录 nopwd qmake将会不理会你当

54、前工作目录的源代码文件而去使用指定的文件在这个模式.files变量可以是文件或者目录的列表 如果指定一个目录,将会包含进DEPENDPATH变量里面 目录里面相关的代码会被包含进生成的工程文件里面。 如果给的是文件, 将会添加到正确的变量, 这主要依赖于他们的扩展名(后缀名); 例如, .ui 文件会被添加到 FORMS(qt2是INTERFACES吧), .cpp 文件会被添加到 SOURCES。在这个模式下。你也可以传递任务到命令行里面, 当这样做的时候,这些任务将会放到生成pro文件之后。 一般先用project模式生成.pro文件,然后再将.pro文件qmake一次生成Makefile

55、。3 QT图像格式转化的设计和实现3.1 系统架构分析设计3.1.1 需求分析设计经常使用电脑的同学都知道,windows系统自带的图片查看器查看图片的方式比较直接,包括放大缩小翻转和图像转化等基本功能。为了使图片的查看方式灵活化,本项目预设计出一款功能多样的图片查看器。拟设计的一款图片查看器基于嵌入式Linux系统、利用Qt开发,其实现的功能在基础的图片查看器的功能如放大缩小之外另增加了图像的转化等功能。嵌入式系统的图形用户界面GUI是嵌入式系统与人与计算机之间传递、交换信息的媒介和对话接口,是计算机的重要组成部分,用户界面的发展经历了命令语言界面、菜单界面、图形用户界面和直接操作界面等过程

56、。嵌入式图形用户界面(Graphics User Interface)系统是嵌入式实时操作系统的一个重要组成部分,随着嵌入式系统硬件设备可获得性的提高和价格的不断降低及嵌入式系统应用范围的不断扩大,嵌入式GUI系统的重要性越来越突出,特别是对高性能嵌入式人机图形交互界面的要求也越来越迫切,比如消费电子和工业实时控制系统。这些系统对GUI的基本要求包括: 轻型、占用资源少 高性能 高可靠性 可配置该软件为满足大众对图片转化的需要和linux、windows下的开发使用者使用。以下对软件的需求做简单陈述。该软件主菜单栏包括文件、编辑、关于,三个部分。下面设有两个部分,一部分用于选择本机目录,另一部

57、分用于展示图片具体内容。可以实现图片的新建(截图)、打开、编辑、转化等功能。还可以根据选择的文件夹自行加载该文件夹中的图片。1)“文件”下拉列表功能。用于显示本软件最重要的功能,可以新建截图、高级转化、退出和保存格式和实现快捷键功能。新建截图中可以对该软件以外区域进行截图,扩大了使用性,并对传统截图软件的一些功能强化了一下,可以实现显示坐标,图像长宽以及保存格式等。保存格式是对当前显示的图片进行保存,并且可以选择保存格式,Qt提供了很多种图片保存的格式,实现了快捷的对图像的格式进行了转化。高级转化放在下边进行阐述。2)高级转化。这部分是程序的核心,它实现了更为强大的功能。当选择该功能时候,它可

58、以加入图片,可以选择要转化的图片格式,图片参数设置,图片质量和转化后的路径等。3)编辑中主要是对图片的显示大小,展示列表进行设置,当然,在没有加载图片时这些按钮是不能被点击的。4)关于。主要是对软件进行一定的说明,用对话框实现,应该没有太大难度。5)对第一点谈到的快捷键进行补充,预设快捷键( Ctrl+N 新建截图,Act+C高级编辑, 缩小、 放大、Ctrl+S保存)。3.1.2 界面的设计与分析计划设计的Qt图像转化软件图如下 图3-1 图像转化主界面设计图 “文件”下拉时设计显示效果(中间黑条为分隔符,下同)图3-2 文件菜单下拉设计图“编辑”是对图片的展示效果的一个设置。这里的编辑功能

59、做的比较简单。其下拉时设计显示效果如下图图3-3 编辑菜单下拉设计图 “关于”是借鉴windos系统下的一种设计习惯,里面有对该软件的说明和版权的阐述,是一个软件必不可少的部分。下拉时设计显示效果图3-4 关于菜单下拉设计图“图像高级转化”是本软件设计的核心内容,它涉及到对图像的加载,对图像的处理,图像路径的设置和图像格式、图像的参数。是本次程序设计的核心内容,也是最大的难点。点击“图像高级转化”进入后的效果设计图图3-5 高级转化设计图以上是本次软件制作中所用到的主要界面。3.1.3 软件结构设计本次软件预设文件目录有:头文件:ImageViewer.h fullScreenWidget.h

60、 dialog.h copyright.h cpp文件: ImageViewer.cpp fullScreenWidget.cpp dialog.cpp copyright.cpp下面对预设的cpp文件及其对应的头文件和资源文件进行说明:Qt中有文件工程文件,其中包括:HEADERS += ImageViewer.h fullScreenWidget.h dialog.h copyright.hFORMS += ImageViewer.ui dialog.ui copyright.uiSOURCES += ImageViewer.cpp main.cpp fullscreenwidget.cp

61、p dialog.cpp copyright.cppRESOURCES += QtImageRes.qrcRC_FILE = myapp.rc对其将要实现的功能做简单介绍ImageViewer主要实现主界面功能,它继承QMainWindow,这样就免于自己再去写主菜单栏,可以专注于实现它的功能,主菜单栏包含各种action。可以setWindowTitle(tr(QMainWindow),在开发中中还实现添加图标等美化功能。fullscreenwidget主要实现截屏功能,继承于QWidget,这个功能会涉及到加载背景,设置坐标等操作,也是这次程序中实现的一个难点。dialog主要实现图像高级

62、转化软件,继承于public QDialog这个类,点击转换时,会调用很多基础的方法,并加载文件路径。从而实现转换功能。QtImageRes.qrc为资源文件,程序所需要的图标,图像,动画等都被存放在该文件中。图3-6 资源目录图ImageViewer.ui、dialog.ui、copyright.ui为QT为方便开发,显示出的一个由XML组成的界面。大致组成: main.c 主要是启动程序,构造类。源文件#include#include#include#includedialog.hint main(int argc, char *argv) QTextCodec:setCodecForTr(QTextCodec:codecForLocale(); QApplication app(argc, argv); QPixmap pixmap(start.png); QSplashScreen splash(pixmap); splash.show(); f

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!