基于qt的图像格式转换器设计与实现_第1页
基于qt的图像格式转换器设计与实现_第2页
基于qt的图像格式转换器设计与实现_第3页
基于qt的图像格式转换器设计与实现_第4页
基于qt的图像格式转换器设计与实现_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于QT的图像格式转换器设计与实现摘要在LINUX,WINDOWS不同平台,利用QT开发工具,实现了对本地图像进行格式转化功能。设计的图像转化软件,具备了一些基本的图像操作,包括查看图片、放大图片、缩小图片、前一张、后一张、图像转化和新建截图等功能。利用QT实现代码复用。使得该软件操作简便,界面整洁。在LINUX系统嵌入式环境下基于QT的图像转化设计更具有实用价值。本设计是在LINUX和WINDOWS下使用QT技术进行GUI设计,利用QTCREATOR软件编程实现一个图形界面,完成一个简单的图像转化的设计。该设计基于QT集成开发环境,利用系统的函数接口来编程、具有体积小、支持的格式多、系统占用资源少、支持各种常用格式的转化等功能,还可以实现代码复用,实现跨平台的效果。此次开发设计在WINDOWS7系统和UBUNTU1204下,以C为开发语言,在QT474开发平台上。通过对其开发,深入了解QT开发软件的流程和其强大功能,为后来使用者起借鉴作用。关键词不同平台;图形用户界面;QT;代码复用DESIGNANDIMPLEMENTATIONOFIMAGEFORMATCONVERTERBASEDONQTABSTRACTINLINUX,WINDOWSPLATFORM,USINGQTDEVELOPMENTTOOLS,IMPLEMENTATIONOFTHENATIVEIMAGEFORMATCONVERSIONFUNCTIONIMAGECONVERSIONSOFTWAREDESIGN,HASSOMEOFTHEBASICOPERATIONOFTHEIMAGE,INCLUDINGVIEWPICTURES,ENLARGE,NARROW,APICTUREBEFORE,AFTERA,IMAGETRANSFORMATIONANDNEWSCREENSHOTSANDOTHERFUNCTIONSREUSECODEBYUSINGQTTHESOFTWAREISEASYTOOPERATE,CLEANINTERFACEINTHEEMBEDDEDLINUXSYSTEMENVIRONMENTDESIGNOFIMAGETRANSFORMATIONBASEDONQTANDHASMOREPRACTICALVALUETHISDESIGNISAGUIDESIGNUSINGQTTECHNOLOGYINLINUXANDWINDOWS,THEREALIZATIONOFAGRAPHICALINTERFACEUSINGQTCREATORSOFTWAREPROGRAMMING,TOCOMPLETEASIMPLEIMAGETRANSFORMINGDESIGNTHEDESIGNOFTHEQTINTEGRATEDDEVELOPMENTENVIRONMENTBASEDON,PROGRAMMING,HASTHEADVANTAGESOFSMALLVOLUME,SUPPORTPLAYBACKFUNCTIONFORMATCONVERSION,THESYSTEMTAKESFEWERRESOURCES,SUPPORTAVARIETYOFCOMMONLYUSEDFORMATUSINGTHEFUNCTIONINTERFACESYSTEMANDCANALSOACHIEVECODEREUSE,TOACHIEVECROSSPLATFORMEFFECTTHEDEVELOPMENTOFDESIGNINTHEWINDOWS7SYSTEMANDUBUNTU1204,WHICHISDEVELOPEDBYCLANGUAGE,INTHEQT474DEVELOPMENTPLATFORMTHROUGHITSDEVELOPMENT,INDEPTHUNDERSTANDINGOFQTSOFTWAREDEVELOPMENTPROCESSANDITSPOWERFULFUNCTIONSFORLATERREFERENCE,USERKEYWORDSDIFFERENTPLATFORMGRAPHICUSERINTERFACEQTCODEREUSE目录摘要IABSTRACTII1绪论111课题背景112课题研究的目的及意义313嵌入式的现状和前景314QT的历史和最新发展52QT开发软件的架构和简介721QT的特点与组成722QT开发机制简介93QT图像格式转化的设计和实现1231系统架构分析设计12311需求分析设计12312界面的设计与分析13313软件结构设计1532程序的实现19321使用QT建立GUI开发19322算法设计和具体功能224测试环节3141QTCREATOR进行调试3142WIN7和UBUNTU1204平台测试325总结35参考文献36致谢37外文资料38对应中文翻译491绪论11课题背景今天我们所处的环境信息化发达、计算机网络遍布全球。离开了嵌入式的发展是不可能谈及网络的,这些年来,嵌入式产品发展出多种多样。这就不仅要求其茶品有强大的网络支持功能,还要有低成本、美观的图形界面。而在LINUX、WINDOWS等操作系统上具有完备功能的图形设计开发软件成为解决问题的好方案。目前,嵌入式系统是在一个快速发展的时代,激烈的竞争,这种竞争和发展在未来几年将继续发展和激烈。嵌入式系统市场和技术的发展很快,国外技术发展的步伐更加成熟,市场基本形成。国内的发展速度也很快,市场有很大的潜力。在国外的一些发达国家,高水平的硬件,尤其是在嵌入式CPU的处理能力上,从原来的8位到16位再到32位,发展速度很快。掌上电脑、智能设备等新产品的涌入市场,使得产业规模进一步扩大和发展。国内的嵌入式硬件需求基本是靠进口来满足,技术相对较弱。但是,如今国内外都有自己推出的嵌入式系统,都在为自己在这个产业争取一份额而努力。而其中LINUX以其公开的系统内核源代码而得到广泛的重视和使用,发展前景非常乐观。在国内,大型的嵌入式系统非常少,今后的开发重点可能转向基于INTERNET的各种信息和嵌入式操作系统领域,包括INTERNET、网上交易、IPHONE和平板电脑等。目前在开发GUI时也会有很多种选择,但是有很少软件可以实现一套代码在几乎不用修改代码便可支持多个操作系统编译。如果不能实现复用代码,要想在另一个系统上实现同样功能,只能舍弃原来的开发代码,进行重新开发。这样会消耗大量的人力和财力,使得原本很成熟的开发成果因此被遗弃。QT在开发时解决了这个问题,我们只需要在不同环境下安装好QT,并把开发好的代码编译一次便可以运行,极大的提高了开发效率,在维护时也方便很多。它还可以发挥每个不同平台的优势,只需引入相应的系统中头文件即可。嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器微处理器、存储器及外设器件和IO端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式。系统更是如此,如需要功耗只有MW甚至W级。嵌入式计算机系统同通用型计算机系统相比具有以下特点1嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。2嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。3嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。4嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。5为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。6嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。要说嵌入式行业,就要先从嵌入式系统和软件说起。嵌入式系统和软件是指嵌入在硬件中的非PC操作系统和开发工具软件,分为嵌入式操作系统、嵌入式支撑软件、嵌入式应用软件,被称为“驱动系统的灵魂。QT是1991年奇趣科技公司开发的一款跨平台的C图形用户界面应用程序框架。它不仅可以开发GUI程序,也可开发非GUI程序,比如控制台工具程序和服务器端程序。QT是基于C语言的面向对象框架,使用特殊的代码生成扩展以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,QT被DIGIA收购。2014年4月,跨平台集成开发环境QTCREATOR310正式发布,实现了对于IOS的完全支持,新增BEAUTIFIER、WINRT等插件,废弃了无PYTHON接口的GDB调试支持,集成了基于CLANG的C/C代码模块,并对ANDROID支持做出了调整,至此实现了全面支持ANDROID、IOS、WP。QT良好的封装机制使得QT的模块化程度非常高,代码可重用性较好,对于用户开发来说是非常方便。QT还提供了一种称为SIGNALS/SLOTS的安全类型来代替CALLBACK,这QTCREATOR是全新的跨平台集成开发环境,为QT开发人员的需求量身定制,由于捆绑了最新QT库二进制软件包和附加的开发工具,并作为QTSDK的一部分,QTCREATOR在单独的安装程序内提供了进行跨平台QT开发所需的全部工具。QTCREATOR主要是为了帮助新QT用户更快速入门并运行项目,还可提高有经验的QT开发人员的工作效率。使得各个元件之间的协同工作变得十分简单。因此,学习QT开发软件无论对于开发普通软件人员还是嵌入式开发者都是十分必要的,它还有重要的商业和研究价值,或许不久的将来便可在图形界面开发软件独居榜首。12课题研究的目的及意义随着科学技术的进步,我们的社会越来越丰富多彩,图像的种类也越来越多。在信息技术发展的今天,人类对于图像的依赖也越来越高。米歇尔列举的有“电脑辅助设计、合成全息照相、飞行模拟器、电脑动画、机器人图像识别、射线跟踪、文本图绘、运动控制、虚拟环境防护、磁共振成像、以及多谱感应器等”。对于图像的定位,在社会发展的过程中,发生了翻天覆地的变化。以前的图像,可能是物的附属,或者是价值的附属,都无法按照意指的规则,进行排列组合和格式转化。QT具有丰富的API包括多达250个以上的C类还提供基于模板的FILE、COLLECTIONS、I/ODEVICE、SERIALIZATION、DIRECTORYMANAGEMENT、DATE/TIME类。甚至还包括正则表达式的处理功能。QT是诺基亚开发的一个跨平台的C图形用户界面应用程序框架。它提供给应用程开发者建立艺术级的图形用户界面所需的所有功能。QT是完全面向对象的,很容易扩展,并且允许真正地组件编程,自从1996年早些时候,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。根据官方描述,QTCREATOR的设计目标是使开发人员能够利用QT这个应用程序框架更加快速及轻易的完成开发任务。在功能方面,QTCREATOR包括项目生成向导、高级的C代码编辑器、浏览文件及类的工具、集成了QTDESIGNER、QTASSISTANT、QTLINGUIST、图形化的GDB调试前端,集成QMAKE构建工具等。尤其是我们在制作软件和网页时候,需要各种各样的不同格式的图片进行装饰,不可能使用单一的图片格式满足用户的所有需求。这时有一款图像转化软件可以满足市场和开发人员的需要。在嵌入式发展飞速的今天,更需要有一款软件可以随时随地的对图像进行处理。特别是在LINUX环境下,图形化软件特别少,需要一个可以方便使用和操作的有图形界面的软件。QT可以实现在WINDOWS和LINUX一次编译多次运行,是市场发展的好趋势。所以今天做一个图形转化程序来验证QT的良好的实现代码机制和强大的跨平台功能。服务业创造价值,而体验业创造意义。在服务中创造更好的用户体验,可以提升用户价值。QT包括一套集成的开发工具,可加快在X11平台上的开发。QT由于是KDE桌面环境的基础,在各个LINUX社区人尽皆知。几乎KDE中的所有功能都是基于QT开发的,而且QT是全球社区成员用来开发成千上万的开源KDE应用程序的基础。本文运用QT技术在LINUX下进行GUI设计,以一个图形界面为例,运用QTCREATOR软件编程,实现一个图像转化软件。13嵌入式的现状和前景嵌入式的现状和前景在未来嵌入式应用软件的开发不仅需要操作系统的支持开发工具而且还需要的强大的开发工具的支持,伴随计算机网络技术的成熟和发展,以及带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样。像智能手机、平板电脑及冰箱,智能家居等嵌入式电子设备的功能不再单一,其结构也更为复杂。为了满足更多应用功能的快速升级,设计师们一方面采用更为先进的嵌入式处理器如32位、64位RISC芯片或者信号DSP处理器增强其处理能力;同时还采用多任务的、实时的编程技术和交叉开发工具技术来控制程序实现的功能复杂性,此外还要简化应用程序设计、保障软件的质量和尽量缩短开发软件的周期。(1)联网成为嵌入式发展的必然趋势为了更好的适应嵌入式分布处理的结构和网络应用上的需求,面向新一代的嵌入式系统要求配备标准的一种或多种网络通信接口才能与之相适应。对于外部联网要求,嵌入设备必需配有通信接口,同时需要TCPIP协议软件支持;同时也需要提供相应的通信网协议软件和物理层驱动软件。为了支持应用软件的特定的编程模式,还需要相应的浏览器和网页支持技术的开发与发展。(2)支持小型电子设备、实现小尺寸、微功耗以及低成本为满足这种特性,使得嵌入式产品设计在一定程度降低处理器的性能,限制一定的内存容量和复用接口芯片。这就相应提高了对嵌入式软件设计技术要求。(3)提供精巧的多媒体人机界面嵌入式设备以后一定会让亿万用户乐于接受,最重要原因之一是它们与使用者之间很强的亲和力,随和的人机交互界面,人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。智能终端产品技术已经非常成熟,如IPHONE、IPAD、ANDRIOD产品、MP3、MP4等等。以LINUX为代表的自由软件开始占领比较大的市场,据统计,LINUX占北美PC服务器25左右的市场份额,打破了微软WINDOWS一统天下的局面,国内也迅速跟进,开发了红旗LINUX等。嵌入式操作系统及其开发平台的市场被普及计算PERVASIVECOMPUTING概念所驱动,发展更为迅速,著名的产品有美国加州的集成系统公司INTEGRATEDSYSTEMSINC推出的PSOSYSTEM,占领了极大的市场份额。国内九五期间,由中科院推促并产业化的HOPEN嵌入式系统,被列为国家科技攻关项目。基于LINUX技术的嵌入式操作系统也已经推出。根据美国VDCVENTUREDEVELOPMENTCO统计数据显示,嵌入式LINUX的市场规模从2001年的5520万美元,到2006年增长到了346亿美元,在未来两年将占嵌入式操作系统市场份额的50。现今,与嵌入式应用相结合的嵌入式操作系统有VXWORKS、LINUX、WINCE、COSII等,他们各有其特点,VXWORKS的特点是可靠性,实时性,可裁剪性,相比较而言,WINCE是多线性、多任务、全优先的操作系统,是专门针对资源有限而设计,COSII则是一个基于优先级的实时操作系统,每一个任务必须具有不同的优先级,如果优先级相同,任务将无法区分。而嵌入式LINUX更具有优势。归纳起来,嵌入式LINUX至少具有以下优势1开放的源码,丰富的软件资源LINUX是自由的操作系统,它的开放源码使用户获得了最大的自由度。LINUX上的软件资源十分丰富,每一种通用程序在LINUX上都可以找到。2功能强大的内核,性能高效、稳定,多任务LINUX的内核非常稳定,它的高效和稳定性已经在各个领域,尤其在网络服务器领域,得到了事实的验证。LINUX内核小巧灵活,易于裁减,这使得它很适合嵌入式系统的应用。3支持多种体系结构,如X86、ARM、MIPS、ALPHA、SPARC等目前,LINUX已经被移植到数十种硬件平台上,几乎支持所有流行的CPU。4完善的网络通讯、图形、文件管理机制LINUX自产生之日起就与网络密不可分,网络是LINUX的强项。另外,LINUX还支持多种文件和图形系统。5支持大量的周边硬件设备LINUX上的驱动已经非常丰富了,它们支持各种主流硬件设备和最新硬件技术。6大小、功能都可定制LINUX秉承UNIX的优秀设计思想,非常灵活,各部分的可定制性都很强。7良好的开发环境,不断发展的开发工具集LINUX有着非常优秀的完整开发工具链,有十几种集成开发环境,其中很多是免费的,大大降低了开发费用。鉴于嵌入式技术的广阔发展前景,技术的推广与普及工作受到了越来越广泛的关。我们要抓住机遇、迎接挑战,在嵌入式发展行业中抢占市场先机,需要所有人共同的努力14QT的历史和最新发展QT提供给应用程序开发者建立艺术级别的图形用户界面所需的所有功能。QT很容易扩展,并且允许真正地组件编程。基本上,QT同XWINDOW上的MOTIF、GTKOPENWIN,等图形界面库和WINDOWS平台上的MFC,OWL,VCL,ATL是同类型的东西。QT46首次包含了对SYMBIAN平台的支持,并在其所支持的平台中新增了WINDOWS7、APPLEMACOS106雪豹和即将上市的MAEMO6。此外还为实时操作系统QNX和VXWORKS提供了网络社区支持。对MAEMO5的支持已进入研发阶段,其技术预览版第二版于2009年12月1日发布。QT对X11、X86、ARM及SYMBIAN的支持首次为开发人员创造了使用同一代码库同时针对这多个平台进行开发的机会。能够跨平台分享代码就意味着开发人员所开发的应用程序上市的速度将更快,影响的设备用户群将更广。QTMOBILITY项目下的全新QTAPI技术预览版也同时发布。这些跨平台的API为开发人员提供了多种功能,如导航类设备的定位功能,以及信息发送和接收、联系人和网络连接管理等。性能提升主要包括一个经过高度优化、重新编写的QTGRAPHICSVIEW渲染算法、一个全新的OPENGL绘图引擎、WEBKIT、使用OPENVG对2D矢量图形的支持,以及对全新DIRECTFB的支持。2013年7月3日,QT51正式版发布了,这是QT50发布后经过6个月的开发而测试的新版本。主要是修复50中的BUG,但该版本还包含了很多新特性和一些小改进,详细内容请看QT51LAUNCHPAGE。QT51绑定了QTCREATOR272,可通过一个新的在线安装器来安装,可自动的无缝的更新,同时也提供了一个新版本的VISUALSTUDIO插件。最新的QT可以支持MS/WINDOWS95、98、NT40、ME、2000、XP、VISTA、WIN7、WIN8、WIN2008、UNIX/X11LINUX、SUNSOLARIS、HPUX、COMPAQTRU64UNIX、IBMAIX、SGIIRIX、FREEBSD、BSD/OS和其它很多X11平台。添加了更多的功能。市场上的极品飞车和OFFICEWPS,GOOGLE地球等一些大家熟悉的软件,QT发展前景很好,也非常容易入手,做出自己喜欢的软件。在开发上可以降低成本,有很广的市场发展前景。(1)跨平台特性,避免重复造车轮写一次源代码,能在不同的系统平台下编译,这个功能很强大,目前,还没有什么软件与它相比。有人说FLEXBUILD可以跨平台,那么,二者效率不可同日而语,QT的效率还是不错的。使用QT这么长时间,如果项目中使用的类不是第三方的,所开发的程序能完美在不同系统,不同体系的平台上运行。如一个监控项目,所开发的程序,除了引用第三方的串口类以外,其它源码不用改动,就可以在不同的平台下编译。即便是第三方的串口类,只是修改了一个条件编译参数,仅此而已。(2)QT本身优良的机制,使用面向组件编程。面向组件的编程,是相对于面向过程和对象编程来说的,面向组件编程更具有优势,什么是面向组件编程呢打个比方,如果你要建设一个房子,有很多方式,假如建筑材料是砖,水泥,沙子,大梁,楼板等。建造房子时,我们在地基上,必须先拌水泥和沙子,然后把砖一块块地垒成墙,再上大梁,然后铺上楼板,这就是一个面向过程的编程。面积组件的编程就是,建筑材料是做好的一面面墙,屋顶,建成房屋时只需把墙和屋顶组合起来就行了。面向组件的编程是用别人做好的代码块,拿过来直接用,所以编程优势比较明显。QT的类库十分丰富,有几千个不同的API,也就是方法,只要你熟悉这些API的参数用法,就可以直接拿过来用,像连接数据库,QT已经写好常见的数据库操作方法,使用时,不需要再编写,只需要拿过来,直接用就好了。(3)把精力放在核心功能的实现上,而不是源码本身。QT使用了面向组件的编程机制,所利用QT编程时,能解放出程序员的编码工作量,所以,程序员把精力放在业务的实现就可以了。利用前人的源码,直接实现自己要做的业务。使用QT编程确实大大提高工作效率,并且代码质量也很高,因为调用的方法大都很成熟,这就是编程的微妙之处。(4)能构造出艺术级的界面,设计界面方便。QT设计界面非常精巧,能用源码直接描述,效率很高。在设计界面时,因为有了布局这个概念,设计界面时,大大提高了设计效率。不像VS,写个界面很死板。也许有人说,我可以用界面设计师呀但不要忽略效率。2QT开发软件的架构和简介21QT的特点与组成QT是由一个强大的跨平台开发架构组成的,它提供了大量的容器类,实现了平台无关性的一大特点。QT中有一个核心类库,它是QT的核心,QT中所有的应用程序中用到的类都是由此继承而来,这个核心类QTCORE。QT常用的一些类和方法(本次设计用到)QCHAR表示的是一个字符的类,在核心QTCORE之中。它中有很多常用到的方法,比如,QCHAR/构造一个空字符,即0QCHARCHARCH/由字符数据CH构造QCHARUCHARCH/由无符号字符数据CH构造QCHARUSHORTCODE/由无符号短整形数据CODE构造,CODE是UNICODE编码QCHARSHORTCODE/由短整形数据CODE构造,CODE是UNICODE编码QCHARUINTCODE/由无符号整型数据CODE构造,CODE是UNICODE编码QCHARINTCODE/由整型数据CODE构造,CODE是UNICODE编码实际使用时很少直接构造QCHAR类的对象,而是把这些构造函数当做类型转换来用,让编译器自动构造所需的QCHAR类对象。也就是说,在所有需要QCHAR类作为参数的地方都可以安全地使用各种整数类型。QCHAR类提供了很多成员函数,可以对字符的类型进行判断,如BOOLISDIGITCONST/判断是否是十进制数字(09)BOOLISLETTERCONST/判断是否是字母BOOLISNUMBERCONST/判断是否是数字,包括正负号、小数点等BOOLISLETTERORNUMBER/判断是否是字母或数字BOOLISLOWERCONST/判断是否是小写字母BOOLISUPPERCONST/判断是否是大写字母QSTRING类提供了很多函数用于将字符串转换为数值QSTRING/整型数QSTRING/无符号整型数QSTRING/长整型QSTRING/无符号长整型数QSTRING/短整型数QSTRING/无符号短整型数QSTRING/高精度浮点数QSTRING/浮点数将浮点数转换为字符串时,FORMAT参数指定转化格式,PRECISION参数指定转换结果的精度,既有效数组的个数。注意这些函数会改变QSTRING对象本身的值,而以下的函数则采用了不同的做法,它们返回一个新的临时对象以供使用QPORINT代表一个坐标点,从属于QTCORE库,可以认为是一个整型的横坐标和一个整型的纵坐标的组合,常用的方法包括,构造宽度为WIDTH,高度为HEIGHT的QSIZE对象。QPOINT类支持以下两种构造方式QPOINT/构造横纵坐标均为0的QPOINT对象QPOINTINTX,INTY/构造横纵坐标分别为X和Y的QPONT对象QPOINT/构造横纵坐标均为0的QPOINT对象QPOINTINTX,INTY/构造横纵坐标分别为X和Y的QPONT对象通过以下成员函数可得到QPOINT对象中的横纵坐标的引用INT/得到横坐标的引用INT/到到纵坐标的引用INT/得到横坐标的引用INT/到到纵坐标的引用注意这些引用都不是只读的,也就是说可以通过它们直接修改QPOINT。QSIZEINTWIDTH,INTHEIGHTQFONT代表字体,在QTGUI库中实现,可以利用其中方法设置字体属性。QPIXMAP代表图像,也是在QTGUI库中实现。可以设置图像参数,加载和保存图像。QPIXMAP代表图像,实现在QTGUI库中构造QPIXMAP/构造大小为0的空图像QPIXMAPCONSTQSIZE/构造大小为SIZE的图像,图像数据未初始化QPIXMAPINTWIDTH,INTHEIGHT/等价于QPIXMAPQSIZEWIDTH,HEIGHTQPIXMAPCONSTQSTRING/从指定的文件中加载图像并生成QPIXMAP对象/FILENAME文件名FORMAT字符串,表示图像文件的格式,如果为0,将进行自动识别FLAGS表示颜色的转换模式图像参数INTDEPTHCONST/颜色深度,即每像素所占的BYTE比特数INTWIDTHCONST/图像宽度,单位是像素INTHEIGHTCONST/图像高度,单机是像素QSIZESIZECONST/图像的大小,即QSIZEWIDTH,HEIGHTQRECTRECTCONST/图像的矩形区域,即QRECTQPOINT0,0,SIZE加载和保存图像BOOLLOADCONSTQSTRING/从文件中加载图像,返回TRUE表示加载成功,FALSE则表示加载失败BOOLSAVECONSTQSTRING/将图像保存到文件,FILENAME文件名FORMAT字符串,表示图像文件的格式,如果为0,自动确定QUALITY表示图像保存的质量,质量越低压缩率越大,越不清晰,取值范围为0100,1表示采用默认值QICON代表图标,在实现QTGUI库中,是一系列图像的组合,每个图像代表窗口在某种状态下应该显示的图标。可以构造和添加图像构造QICON/构造一个空图像构成的图标QICONCONSTQPIXMAP/从QPIXMAP对象构造图标,此时系统会自动产生窗口不同状态下对应的图像,比如窗口在禁用状态下其图标为灰色QICONCONSTQSTRING/从图像文件构造图标,此时,文件并不是立刻加载,而是当图标要显示时才加载添加图像VOIDADDFILECONST/FILENAME文件名SIZE指定大小MODE指定使用模式,即窗口在何种状态下使用这个图像STATE指定使用状态/MODE为QICON类的成员类型,有以下取值QICONNORMAL窗口为使能状态,但未激活QICONDISABLED窗口为禁用状态QICONACTIVE窗口为激活状态QICONSELECTED窗口被选中/QICONOFF窗口在关状态QICONON窗口在开状态QWIDGET代表一般的窗口,也是在实现QTGUI库中实现的,包含各种各样的窗口,可以设置其隐蔽性,可见性,窗口特征等待。QDIALOG对话框设置,QDIALOG代表对话框,用来实现那些只是暂时存在的用户界面,是独立的窗口,但通常也有父窗口对话框有模态和非模态两种,非模态对话框的行为和使用方法都类似于普通的窗口,模态对话框则有所不同,当模态对话框显示时,其他窗口将全部进入非激活状态,不能接受键盘和鼠标事件,模态的方式又可分为两种,一种是对整个应用程序模态,这时它的出现将导致程序中的所有窗口失去响应另一种是对窗口模态,这时仅仅会导致它所在的整个窗口树失去响应它只是表示暂时存在的用户界面,包含模态与非模态两种。另外还有QLABEL、QABSTRACTBUTTONQPUSHBUTTON,QCHECKBOXQRADIOBUTTON等一些界面显示类,这里不做赘述。22QT开发机制简介信号与槽机制是QT开发时用到的的核心机制。信号和插槽是一种高级接口,应用于对象与对象之间的接口通信,它是QT最常用到的功能,也是QT开发软件区别于其他开发工具的关键。信号和插槽技术是QT自行定义的一种通信机制,它独立于标准的C/C语言,要想正确地处理信号和插槽,必须借助一个称为MOC(METIAOBJECTCOMPILER)的QT工具,该工具可以对C程序进行预处理,同时为高层次的事件处理自动生成所需要的附加代码。QT的槽信号机制可以实现多个信号与单个插槽连接,单个信号与很多插槽也可以连接,甚至将一个信号与另外一个信号相连接也是可以实现的的,这时无论第一个信号什么时候发射,系统都将立刻发射第二个信号。总之,信号与插槽组成了一个强大的连锁编程机制。在我们所熟知的很多GUI工具包中,窗口小部件WIDGET都有一个回调函数,用于响应它们能触发的每个动作,回调函数,通常是一个指向某个函数的指针。但是,在QT中信号和槽机制的开发模式取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。信号和槽机制能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生COREDUMPS。所有从QOBJECT或其子类例如QWIDGET派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射EMIT出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。可以清晰展现出其实现原理,如图21所示图21QT信号和槽机制关联图QMAKE工具介绍。编写和开发多平台的软件是单调乏味的,且出现错误的几率很大,维护艰难更是如此,尤其是当不同的编译器和平台组合需要若干个编译文件时,但是通过QT提供的QMAKE工具可以构建出CROSSPLATFORMBULIDS跨平台的应用程序。即利用QMAKE可以根据一个工程文件(PRO)产生不同平台下的MAKEFILE文件。QMAKE支持跨平台开发和所谓的影子生成(SHADOWBUILDS)技术,QMAKE还易于在不同的配置中切换,此外,它还可以进行调试和发布不同版本的生成,十分方便。嵌入式系统的GUI简介嵌入式GUI就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统。所以嵌入式GUI不但要有GUI的特征,在实际应用中,嵌入式系统对它来说还有如下的基本要求占用资源少,高性能,高可靠性,可配置下面,我们将简要介绍集中常见的嵌入式系统的GUI,并对他们的优缺点进行比较。1)OPENGUIOPENGUI基于一个用汇编实现的X86图形内核,提供了一个高层的C/C图形/窗口接口。它和MINIGUI一样,也是使用LGPL许可证。OPENGUI提供了2维绘图原语,消息驱动的API、BMP文件格式支持。OPENGUI功能强大、使用方便。用户甚至可以实现BORLANDBGI风格的应用程序,或者是QT风格的窗口。OPENGUI支持鼠标和键盘的事件。在LINUX上基于FRAMEBUFFER3或者SVGALIB4实现绘图。LINUX下OPENGUI也支持MESA3D。颜色模型方面,OPENGUI已经支持8、16、32位模型。由于其基于汇编实现的内核并利用MMX指令进行了优化,OPENGUI运行速度非常快,可以用ULTRAFAST形容,它支持32位的机器,能够在MSDOS,QNX5和LINUX下运行,主要用来在这些系统中开发图形应用程序和游戏。OPENGUI非常稳定,但可移植性因为其内核使用汇编语言实现会受到影响。2)MINIGUIMINIGUI是LINUX控制台上运行的,基于SVGALIB和LINUXTHREAD6库的多窗口图形用户界面支持系统。MINIGUI采用了类WIN32的API接口,实现了简化的类WINDOWS98风格的图形用户界面。MINIGUI也是一个窗口系统,他的主要组成元素是窗口,在这个基础上MINIGUI中的窗口可以基本分四类,分别为主窗口、对话框、控件和主窗口中的窗片。MINIGUI中的主窗口和WINDOWS应用程序的主窗口概念类似,MINIGUI中的每个主窗口对应于一个单独的线程,通过函数调用可建立主窗口以及对应的线程RQMAKE将会遍历目录NOPWDQMAKE将会不理会你当前工作目录的源代码文件而去使用指定的文件在这个模式FILES变量可以是文件或者目录的列表如果指定一个目录,将会包含进DEPENDPATH变量里面目录里面相关的代码会被包含进生成的工程文件里面。如果给的是文件,将会添加到正确的变量,这主要依赖于他们的扩展名后缀名例如,UI文件会被添加到FORMSQT2是INTERFACES吧,CPP文件会被添加到SOURCES。在这个模式下。你也可以传递任务到命令行里面,当这样做的时候,这些任务将会放到生成PRO文件之后。一般先用PROJECT模式生成PRO文件,然后再将PRO文件QMAKE一次生成MAKEFILE。3QT图像格式转化的设计和实现31系统架构分析设计311需求分析设计经常使用电脑的同学都知道,WINDOWS系统自带的图片查看器查看图片的方式比较直接,包括放大缩小翻转和图像转化等基本功能。为了使图片的查看方式灵活化,本项目预设计出一款功能多样的图片查看器。拟设计的一款图片查看器基于嵌入式LINUX系统、利用QT开发,其实现的功能在基础的图片查看器的功能如放大缩小之外另增加了图像的转化等功能。嵌入式系统的图形用户界面GUI是嵌入式系统与人与计算机之间传递、交换信息的媒介和对话接口,是计算机的重要组成部分,用户界面的发展经历了命令语言界面、菜单界面、图形用户界面和直接操作界面等过程。嵌入式图形用户界面GRAPHICSUSERINTERFACE系统是嵌入式实时操作系统的一个重要组成部分,随着嵌入式系统硬件设备可获得性的提高和价格的不断降低及嵌入式系统应用范围的不断扩大,嵌入式GUI系统的重要性越来越突出,特别是对高性能嵌入式人机图形交互界面的要求也越来越迫切,比如消费电子和工业实时控制系统。这些系统对GUI的基本要求包括轻型、占用资源少高性能高可靠性可配置该软件为满足大众对图片转化的需要和LINUX、WINDOWS下的开发使用者使用。以下对软件的需求做简单陈述。该软件主菜单栏包括文件、编辑、关于,三个部分。下面设有两个部分,一部分用于选择本机目录,另一部分用于展示图片具体内容。可以实现图片的新建(截图)、打开、编辑、转化等功能。还可以根据选择的文件夹自行加载该文件夹中的图片。1)“文件”下拉列表功能。用于显示本软件最重要的功能,可以新建截图、高级转化、退出和保存格式和实现快捷键功能。新建截图中可以对该软件以外区域进行截图,扩大了使用性,并对传统截图软件的一些功能强化了一下,可以实现显示坐标,图像长宽以及保存格式等。保存格式是对当前显示的图片进行保存,并且可以选择保存格式,QT提供了很多种图片保存的格式,实现了快捷的对图像的格式进行了转化。高级转化放在下边进行阐述。2)高级转化。这部分是程序的核心,它实现了更为强大的功能。当选择该功能时候,它可以加入图片,可以选择要转化的图片格式,图片参数设置,图片质量和转化后的路径等。3)编辑中主要是对图片的显示大小,展示列表进行设置,当然,在没有加载图片时这些按钮是不能被点击的。4)关于。主要是对软件进行一定的说明,用对话框实现,应该没有太大难度。5)对第一点谈到的快捷键进行补充,预设快捷键(CTRLN新建截图,ACTC高级编辑,缩小、放大、CTRLS保存)。312界面的设计与分析计划设计的QT图像转化软件图如下图31图像转化主界面设计图“文件”下拉时设计显示效果中间黑条为分隔符,下同图32文件菜单下拉设计图“编辑”是对图片的展示效果的一个设置。这里的编辑功能做的比较简单。其下拉时设计显示效果如下图图33编辑菜单下拉设计图“关于”是借鉴WINDOS系统下的一种设计习惯,里面有对该软件的说明和版权的阐述,是一个软件必不可少的部分。下拉时设计显示效果图34关于菜单下拉设计图“图像高级转化”是本软件设计的核心内容,它涉及到对图像的加载,对图像的处理,图像路径的设置和图像格式、图像的参数。是本次程序设计的核心内容,也是最大的难点。点击“图像高级转化”进入后的效果设计图图35高级转化设计图以上是本次软件制作中所用到的主要界面。313软件结构设计本次软件预设文件目录有头文件IMAGEVIEWERHFULLSCREENWIDGETHDIALOGHCOPYRIGHTHCPP文件IMAGEVIEWERCPPFULLSCREENWIDGETCPPDIALOGCPPCOPYRIGHTCPP下面对预设的CPP文件及其对应的头文件和资源文件进行说明QT中有文件工程文件,其中包括HEADERSIMAGEVIEWERHFULLSCREENWIDGETHDIALOGHCOPYRIGHTHFORMSIMAGEVIEWERUIDIALOGUICOPYRIGHTUISOURCESIMAGEVIEWERCPPMAINCPPFULLSCREENWIDGETCPPDIALOGCPPCOPYRIGHTCPPRESOURCESQTIMAGERESQRCRC_FILEMYAPPRC对其将要实现的功能做简单介绍IMAGEVIEWER主要实现主界面功能,它继承QMAINWINDOW,这样就免于自己再去写主菜单栏,可以专注于实现它的功能,主菜单栏包含各种ACTION。可以SETWINDOWTITLETR“QMAINWINDOW“,在开发中中还实现添加图标等美化功能。FULLSCREENWIDGET主要实现截屏功能,继承于QWIDGET,这个功能会涉及到加载背景,设置坐标等操作,也是这次程序中实现的一个难点。DIALOG主要实现图像高级转化软件,继承于PUBLICQDIALOG这个类,点击转换时,会调用很多基础的方法,并加载文件路径。从而实现转换功能。QTIMAGERESQRC为资源文件,程序所需要的图标,图像,动画等都被存放在该文件中。图36资源目录图IMAGEVIEWERUI、DIALOGUI、COPYRIGHTUI为QT为方便开发,显示出的一个由XML组成的界面。大致组成MAINC主要是启动程序,构造类。源文件INCLUDEINCLUDEINCLUDEINCLUDE“DIALOGH“INTMAININTARGC,CHARARGVQTEXTCODECSETCODECFORTRQTEXTCODECCODECFORLOCALEQAPPLICATIONAPPARGC,ARGVQPIXMAPPIXMAP“STARTPNG“QSPLASHSCREENSPLASHPIXMAPSPLASHSHOWFORLONGI0ISETWINDOWTITLEQOBJECTTR“WINDOWSHOWRETURNAPPEXEC添加QTEXTCODECSETCODECFORTRQTEXTCODECCODECFORLOCALE可以解决中文乱码问题,并在使用中文的地方用OBJECTTR“或者用TR“”。主要的三大功能截图(保存成不同格式)、展示图片(放大缩小前后)、高级图像转化(核心功能,“从哪里来要去哪里”)。截图CONNECTTHISNEWACT,SIGNALTRIGGERED,THIS,SLOTSCREENSHOTQPIXMAPPIXMAPFULLWIDGETGETFULLSCREENPIXMAP(INITFULLSCREENWIDGET)绘图方法KEYPRESSEVENTMOUSEPRESSEVENTMOUSERELEASEEVENTMOUSEMOVEEVENTMOUSEDOUBLECLICKEVENT等例如VOIDFULLSCREENWIDGETMOUSEDOUBLECLICKEVENTQMOUSEEVENTEVENT图像显示ON_ACTIONNEXT_TRIGGEREDON_ACTIONPREVIOUS_TRIGGEREDON_ACTIONZOOMOUT_TRIGGERED(RESIZE)ON_ACTIONZOOMIN_TRIGGEREDON_ACTIONNORMALSIZE_TRIGGERED高级转化IMAGEVIEWERCPP中的CONNECTTHISCHANGEACT,SIGNALTRIGGERED,THIS,SLOTCHANG_PICDIALOGW(DIALOGDIALOGQWIDGETPARENTQDIALOGPARENT,UINEWUIDIALOGUISETUPUITHIS)WSHOW创建出DIALOG并进行初始化选择文件VOIDON_SELECTOUTDIRBTN_CLICKED转出文件VOIDON_OUTCURRENTCHECK_CLICKED开始转化VOIDON_START_CLICKED32程序的实现321使用QT建立GUI开发嵌入式系统的图形用户界面GUI是嵌入式系统与人与计算机之间传递、交换信息的媒介和对话接口,是计算机的重要组成部分,用户界面的发展经历了命令语言界面、菜单界面

温馨提示

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

评论

0/150

提交评论