《图形用户接口幻灯片.ppt》由会员分享,可在线阅读,更多相关《图形用户接口幻灯片.ppt(114页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、图形用户接口第1页,共114页,编辑于2022年,星期五定义n图形用户接口(GraphicsUserInterface,GUI),又叫桌面系统、窗口管理系统、图形操作环境、图形用户界面等,是操作系统和用户的人机接口。nGUI极大地方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而可以通过窗口、菜单方便地进行操作。第2页,共114页,编辑于2022年,星期五13.1图形用户接口的层次结构图形用户接口的层次结构第3页,共114页,编辑于2022年,星期五13.1.1 图形基础设施图形基础设施图形基础设施是一种底层的图形驱动引擎底层的图形驱动引擎,一般是由操作系统提供。它是用作其他更高一层图
2、形或者图形应用程序的基本函数库/依赖库,在其之上可以针对某些特定应用需求做进一步的封装。譬如,在对于只需要单任务的低端应用,可以以API函数的形式,封装成静态或者动态的高级图形函数库。而在更多的场合,用户是需要类似Windows的桌面系统,这样就要构建多任务GUI窗口管理系统。在Linux环境下,常见的图形基础设施有SVGALib(VGA)、XWindow(Xlib)、LibGGI和FrameBuffer等。第4页,共114页,编辑于2022年,星期五13.1.2 高级图形函数库高级图形函数库高级图形函数库提供的图形界面编程接口主要分为两大类,一类只提供基本的画点绘线、文本区域处理等一类只提供
3、基本的画点绘线、文本区域处理等,如SDL(standarddrawinglibrary);另一类就是以窗口部件另一类就是以窗口部件(widget,亦称为控件、部件等)形式,采用面向对象方式进,亦称为控件、部件等)形式,采用面向对象方式进行可视化的编程,行可视化的编程,可用于嵌入式GUI系统(需要诸如pThread等消息处理函数库的支持)和可以运行在GUI系统上的应用程序的开发,诸如GTK,QT和PEG等。第5页,共114页,编辑于2022年,星期五13.1.3 GUI窗口管理系统窗口管理系统GUI窗口管理系统窗口管理系统是一个非常复杂的系统,很多时候甚至就类似于一个操作系统,它是嵌入式系统设计
4、中迄今为止没有是嵌入式系统设计中迄今为止没有很好解决的难点之一很好解决的难点之一。目前,在桌面GUI系统领域主要有X-Windows、KDE、GNOME等,在嵌入式系统领域,主要有MiniGUI、Nano-X(Microwindows)、OpenGUI和Qpe(QtPalmtopEnvironment)等。第6页,共114页,编辑于2022年,星期五13.2 桌面桌面Linux系统中系统中GUI nKDE(KoolDesktopEnvironment)与GNOME(GNUNetworkObjectEnvironment)是目前桌面Linux/UNIX系统中最常用的桌面最常用的桌面GUI窗口系统
5、窗口系统。MiniGUI、Qt/E和Nano-X则是嵌入式系统中广泛应用的嵌入式GUI系统。第7页,共114页,编辑于2022年,星期五13.2.1 KDEnKDE是1996年德国MatthiasEttrich发起了符合GPL规范的开源项目,与之前各种基于XWindow的图形用户环境不同的是,KDE并非针对系统管理员等高级用户,而是锁定为普通的终端用户,即希望KDE能够包含用户日常应用所需要的所有应用程序组件,例如Web浏览器、电子邮件客户端、办公套件、图形图像处理软件等。第8页,共114页,编辑于2022年,星期五13.2.2 GNOMEnGNOME是1997年墨西哥年仅26岁的程序员Mig
6、uelDeIcaza发起的开源项目,目前诸如RedHat/Fedora、SuseLinux发行版都默认使用它。它功能上的特性和KDE类似,并且相对要轻便些第9页,共114页,编辑于2022年,星期五13.3嵌入式Linux系统GUIn在现代的嵌入式人机系统中,人是用户和主动的参与者,能与机器对话,要求机器对人的各种动作做出响应。因此,图形用户界面已经成为嵌入式应用系统研制中的重点之一。典型的嵌入式GUI 系统有紧缩的 X Window 系统、MiniGUI、Nano-X(MicroWindows)、Tiny X(紧缩版的X-Windows)、OpenGUI、QT/Embedded 等.第10页
7、,共114页,编辑于2022年,星期五13.3.1 MiniGUInMiniGUI是1998年底推出的一款面向嵌入式系统或者实时系统的GUI系统,是国内最早出现的、在国际上有一定知名度的几个自由软件项目之一,最先是由原清华大学教师魏永明先生主持开发,现由北京飞漫软件技术有限公司(http:/)进行商业化维护和运作。自1999年初以遵循GPL协议发布第一个版本以来,到现在已历经十年多时间,目前最新版本是MiniGUIV3.0.12。经过飞漫软件多年的精心打造,MiniGUI已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统。目前,MiniGUI已经广泛应用于通讯、医疗、工控、电力、
8、机顶盒、多媒体终端等领域。一些企业如华为、中兴通讯、大唐移动、长虹等已经成功的使用MiniGUI进行产品开发,约有60%获得入网许可证的TD-SCDMA手机使用MiniGUI作为其嵌入式图形平台,以支撑浏览器、可视电话等3G应用软件的运行。第11页,共114页,编辑于2022年,星期五北京飞漫软件技术有限公司提供详细的技术文档支持MiniGUI的应用。有关MiniGUI3.0更多的内容请登录http:/ QtopiaQtopia是嵌入式GUI窗口系统,也叫做嵌入式Linux的桌面系统,是Trolltech面向嵌入式设备的Qt掌上机环境(QtPalmtopEnvironment,Qpe)。它建立
9、在Qt/Embedded(即Qt/E)之上,基于Qt/E开发出来的程序就可以放到这个桌面上,为开发提供了一个类似于Windows这样易于使用的界面。Qtopia分为开源的PDA版本Qtopia和收费的手机版Qtopia,前者提供PDA的桌面系统基本源代码,后者还包括手机模块代码等。第13页,共114页,编辑于2022年,星期五13.3.3 Nano-XNano-X的前身就是CenturySoftware推出的开源项目Microwindows。它主要采用C语言进行开发,采用C/S体系结构,提供了相对完善的图形功能,并且具有分层设计。最底层是屏幕和输入设备驱动程序(关于键盘或鼠标)来与实际硬件交互
10、。在中间层,可移植的图形引擎提供对线的绘制、区域的填充、多边形、裁剪以及颜色模型的支持。第14页,共114页,编辑于2022年,星期五13.4 MiniGUI应用入门应用入门13.4.1 MiniGUI的软件架构MiniGUI具有良好的软件架构,通过抽象层将MiniGUI上层和底层操作系统隔离开来。如图13.4.1所示,基于MiniGUI的应用程序一般通过ANSIC库、操作系统和驱动程序接口以及MiniGUI自身提供的API来实现自己的功能;MiniGUI中的“可移植层”可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关心底层的硬件平台输出和输入设备。第15页,共114页,编辑于
11、2022年,星期五图13.4.1MiniGUI的层次结构第16页,共114页,编辑于2022年,星期五1.图形抽象层(图形抽象层(Graphics Abstraction Layer,GAL)图形抽象层将来自不同操作系统或设备的图形接口进行抽象,为 MiniGUI 上层提供统一的图形接口。在图形抽象层内,包含有针对 Linux FB 设备、eCos LCD 设备等的软件组成部分。这些软件组成部分通过调用底层设备的接口来实现具体的图形抽象层操作,如打开设备、设置分辨率及显示模式、关闭设备等。这些用于适配图形抽象层接口的软件组成部分被称为“引擎(engine)”,其概念和操作系统中的设备驱动程序类
12、似。第17页,共114页,编辑于2022年,星期五2.输入抽象层(输入抽象层(Input Abstraction Layer,IAL)与GAL类似,输入抽象层将MiniGUI 涉及的所有输入设备,如键盘(keyboard)、小键盘(keypad)、鼠标(mouse)、触摸屏(touch screen)等抽象了出来,为上层提供一致的接口。要支持不同的键盘、触摸屏或者鼠标接口,则通过为 IAL 编写不同的输入引擎实现。MiniGUI 通过 IAL 及其输入引擎,提供对 Linux 控制台(键盘及鼠标)、触摸屏、遥控器、小键盘等输入设备的支持。第18页,共114页,编辑于2022年,星期五3 3.图
13、形设备接口(图形设备接口(Graphics Device InterfacesGraphics Device Interfaces,GDIGDI)该模块基于图形抽象层为上层应用程序提供图形相关的接口,如绘制曲线、输出文本、填充矩形等等。图形设备接口中含包含其他比较独立的子模块,如字体字符集(font and charset)支持、图像(image)支持等。4.4.消息处理模块(消息处理模块(Messaging ModuleMessaging Module)该模块在输入抽象层基础上,实现了 MiniGUI 的消息处理机制,为上层提供了完备的消息管理接口。众所周知,几乎所有的GUI 系统本质上都是
14、事件驱动的,系统自身的运行,以及GUI 应用程序的运行,都依赖于消息处理模块。第19页,共114页,编辑于2022年,星期五n5.多窗口处理模块(多窗口处理模块(Windowing Module)和控件()和控件(Control 或或 Widget)n基于图形设备接口和消息处理模块,MiniGUI实现了多窗口处理模块。该模块为上层应用程序提供了创建主窗口和控件的基本接口,并负责维护控件类。控件类是用来实现控件代码重用的重要概念,利用控件类(controlclass),我们可以创建属于某个控件类的多个控件实例(instance),从而让这些控件实例使用同一个控件类的代码,这样,我们就实现了类似C
15、+那样的类和实例概念,从而可以最大程度上重复利用已有代码,并提高软件的可维护性。MiniGUI的控件模块实现了常见的GUI控件,如静态框、按钮、编辑框、列表框、下拉框等等。n6.外观支持(外观支持(Look and Feel)n这个模块是MiniGUIV3.0提供给上层应用程序的接口,可用来定制MiniGUI窗口、控件的绘制。在MiniGUIV3.0之前的版本中,对主窗口和控件的定制能力,还没有被抽离出来形成独立的模块,但我们仍然可以通过配置选项让MiniGUI的主窗口、控件具有三种显示风格,分别是:类似PC的三维风格(PC3D)、平板风格(FLAT)、流行风格(FASHION)。在MiniG
16、UI3.0中,主窗口和控件的外观可完全由应用程序自行定制,在创建主窗口或者控件时,指定外观渲染器(renderer)的名称,就可以让主窗口或者控件具有各自不同的外观。第20页,共114页,编辑于2022年,星期五5.多窗口处理模块(多窗口处理模块(Windowing Module)和控件)和控件 (Control 或或 Widget)基于图形设备接口和消息处理模块,MiniGUI 实现了多窗口处理模块。该模块为上层应用程序提供了创建主窗口和控件的基本接口,并负责维护控件类。控件类是用来实现控件代码重用的重要概念,利用控件类(control class),我们可以创建属于某个控件类的多个控件实例
17、(instance),从而让这些控件实例使用同一个控件类的代码,这样,我们就实现了类似 C+那样的类和实例概念,从而可以最大程度上重复利用已有代码,并提高软件的可维护性。MiniGUI 的控件模块实现了常见的 GUI 控件,如静态框、按钮、编辑框、列表框、下拉框等等。第21页,共114页,编辑于2022年,星期五13.4.2 MiniGUI 的开发环境的开发环境 n基于 MiniGUI 的开发可以在 Linux 或 Windows 操作系统下进行。由于 MiniGUI 完全用 C 来编写,具有非常好的移植性,也使得 MiniGUI 应用程序的交叉编译工作十分方便。为嵌入式设备编写的应用程序可以
18、在任何安装在针对该设备的交叉编译工具链的平台上进行编译。最常见的方式是在 Linux 环境下安装 gcc 的交叉编译器,对应用程序进行编译。对于某些嵌入式系统(如 VxWorks,uC/OS-II),则一般在 Windows 下安装相应的编译环境(如 Tornado、ADS等),对应用程序进行编译。n如果 MiniGUI 应用程序在 Linux 环境下开发,它可以有两种运行方式。一种是直接在内核支持的FrameBuffer 控制台下运行,一种则是在一个模拟 FrameBuffer 的 X11 应用程序(qvfb)下运行并完成调试。第22页,共114页,编辑于2022年,星期五n如果 MiniG
19、UI 应用程序在 Windows 下开发,则可以使用 Visual Studio 集成开发环境进行开发及编译,并在模拟 FrameBuffer 的 Windows 应用程序(wvfb)下运行应用程序并调试(如图13.4.2所示)。第23页,共114页,编辑于2022年,星期五图13.4.2在wvfb模拟器上运行MiniGUI应用程序直接在模拟器或控制台下运行调试 MiniGUI 应用程序,大大方便了嵌入式程序的开发,避免了用户重复刷写嵌入式设备的工作。同时也使得用户可以在开发主机上使用标准的调试器对应用程序进行调试。MiniGUI V3.0推出的xvfb兼容MiniGUI V2.0.X以前的q
20、vfb,wvfb。第24页,共114页,编辑于2022年,星期五13.4.3 MiniGUI的移植的移植1.PC 机上配置,编译,安装,运行机上配置,编译,安装,运行MiniGUI(1)在redhat9.0 上配置FrameBuffer 要激活VESA Frame Buffer 驱动程序,需要修改/boot/grub/menu.lst 文件,并在kernel打头的一行添加vga=0 x0317.其中Red Hat Linux(2.4.208,FrameBuffer)就是设置了VESA FrameBuffer 的引导选项。第25页,共114页,编辑于2022年,星期五(2)在)在PC上编译并安装
21、上编译并安装MiniGUI开发包开发包n第一步,在PC 上编译并安装libminiguin第二步,在PC 上安装MiniGUI 的资源n第三步,编译应用程序例子第26页,共114页,编辑于2022年,星期五(3)Redhat上上MiniGUI 的运行的运行n由于必须要在控制台模式才能运行MiniGUI。要启动控制台,按住CtrlAlt 的同时,n按F1F6 中的任意一个均可,然后登录系统,进入sample 目录,直接运行即可。第27页,共114页,编辑于2022年,星期五2.2.交叉编译,并交叉编译,并在嵌入式目标机上运行在嵌入式目标机上运行MiniGUI(1)交叉编译libminigui(2
22、)安装MiniGUI资源文件(3)编译应用程序例子(4)在嵌入式目标机上运行MiniGUI第28页,共114页,编辑于2022年,星期五13.4.4 MiniGUI的运行模式的运行模式nMiniGUI是采用C语言开发的,为了适合不同的操作系统环境,MiniGUI可以配置成三种不同的运行模式。n(1)MiniGUI-Threads模式n运行在MiniGUI-Threads上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式非常适合于大多数传统意义上的嵌入式操作系统,比如C/OS-II、eCos、VxWorks、pSOS等等。当然,在Linux和Clinu
23、x上,MiniGUI也能以MiniGUI-Threads的模式运行。n(2)MiniGUI-Processes模式n该模式在1.6.8及早期版本中称为“MiniGUI-Lite”,它与MiniGUI-Threads相反,MiniGUI-Processes上的每个程序是独立的进程,每个进程也可以建立多个窗口。MiniGUI-Processes适合于具有完整UNIX特性的嵌入式操作系统,比如嵌入式Linux。第29页,共114页,编辑于2022年,星期五n(3)MiniGUI-Standalone模式n在Standalone模式,MiniGUI可以以独立进程的方式运行,既不需要多线程也不需要多进程
24、的支持,这种运行模式适合功能单一的应用场合。比如在一些使用Clinux的嵌入式产品中。n一般而言,MiniGUI-Standalone模式的适用面最广,可以支持几乎所有的操作系统(目前只用来提供对Linux/Clinux操作系统的支持);MiniGUI-Threads模式的适用面次之,可运行在支持多任务的实时嵌入式操作系统,或是具备完整UNIX特性的普通操作系统;MiniGUI-Process模式的适用面较小,它仅适合具备完整UNIX特性的嵌入式操作系统,如Linux。n但不论采用哪种运行模式,MiniGUI为上层应用程序提供了最大程度上的一致性,只有少数几个涉及初始化的接口在不同运行模式上有
25、所不同。第30页,共114页,编辑于2022年,星期五13.5.Qt应用入门应用入门13.5.1 Qt支持的平台支持的平台nQtSoftware前身属于始创于1994年的Trolltech,1996年Qt上市。Trolltech于2008年6月被Nokia收购(http:/)。目前Qt是一个已经形成事实上的标准的C+框架,用于高性能的跨平台软件开发,Qt已成为数以万计的商已成为数以万计的商业和开源应用程序的基础。业和开源应用程序的基础。nQt是一个跨平台的应用程序和UI框架,它包括跨平台类库、集成开发工具和跨平台IDE。使用使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可您只需一
26、次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统跨不同桌面和嵌入式操作系统(如EmbeddedLinux,MacOS,Windows,Linux/X11,WindowsCE,Symbian,Maemo等)部署这些应用程序。其中:第31页,共114页,编辑于2022年,星期五13.5.Qt应用入门应用入门13.5.1 Qt支持的平台支持的平台n1.Qt for Embedded Linux nQtforEmbeddedLinux是用于嵌入式Linux(EmbeddedLinux)所支持设备的应用程序架构,可以使用Qt创建具有独特用户体验的具备高效内存效率的设备和应用程序。Qt
27、可以在任何支持Linux的平台上运行。nQt除了提供所有工具以及API与类库,(如QtWebKit)外,QtforEmbeddedLinux还提供用于最优化嵌入式开发环境的主要组件。第32页,共114页,编辑于2022年,星期五nQt构建在标准的API上,应用于嵌入式Linux设备,并带有自己的紧凑视窗系统(QWS)。利用Qt的API,只须少数几行代码便可以实现高端的功能。基于Qt的应用程序可直接写入Linux帧缓冲,可减少内存消耗,可利用硬件加速图形的优势,可编译移除不常使用的组件与功能,解除了对X11视窗系统的需求。nQtforEmbeddedLinux提供一个虚拟帧缓冲器(QVFb),可
28、以采用点对点逐像素匹配物理设备显示。IPC(进程间通讯)可以创建丰富的多应用程序用户体验。Qt支持嵌入式Linux上的多种字体格式,包括:TrueType,PostscriptType1与Qt预呈现字体。Qt扩展了Unicode支持,包括:构建时自动数据抽取,运行时自动更新。另外Qt还提供定制字体格式的插件,允许在运行时轻松添加新字体引擎。应用程序间的字体共享功能可以提高内存效率。第33页,共114页,编辑于2022年,星期五n采用QtforEmbeddedLinux创建的应用程序可以移植到WindowsCE和Qt支持的其它任何操作系统上。nQtforEmbeddedLinux的基本要求如下:
29、n开发环境:Linux内核2.4或更高,GCC版本3.3或更高,用于MIPSGCC版本3.4.或更高。n占用存储空间:存储空间取决于配置,压缩后:1.7-4.1MB,未压缩:3.6-9.0MBn硬件平台:易于载入任何支持带C+编译器和帧缓冲器驱动Linux的处理器。支持ARM,x86,MIPS,PowerPC。n注意:对于Qt5.0,QtforEmbeddedLinux将不作为一个单独的平台存在。目前Qt的版本为4.8。第34页,共114页,编辑于2022年,星期五n2.Linux/X11 QtnQt是综合性的应用程序和UI框架,用于开发Linux/X11应用程序,无须重新编写源代码,便可跨其
30、他桌面和嵌入式操作系统进行部署。nQt支持多种X11平台,如Solaris、AIX、HP-UX和即将推出的Maemo6。nQt提供跨平台QtIDE、拖放可视化GUI构建器、翻译工具、可定制的HTML帮助文件阅读器、集成的Eclipse和KDevelopIDE。Qt提供的集成开发工具,可加快在X11平台上的开发。第35页,共114页,编辑于2022年,星期五nQt类库包括用来生成高级GUI应用程序所需的所有功能:n一整套可定制的UI控件或widget;n集成了OpenGL,支持3D图形;n强大的多线程功能;n可处理上百万个对象的2D图形画布;n集成了Phonon多媒体框架;nWebKit集成;n
31、网络、XML和数据库功能;nECMA标准脚本引擎。第36页,共114页,编辑于2022年,星期五n3.WindowsQtnQt是综合性的应用程序和UI框架,用于开发Windows应用程序,无须重新编写源代码,便可跨其他桌面和嵌入式操作系统进行部署。Qt应用程序支持WindowsVista、Server2003、XP、NT4、Me/98和WindowsCE。Windows的Qt包含有:n直观的类库;n集成的开发工具;n集成VisualStudio;n在Qt应用程序中使用ActiveX控件;n集成了用于图形硬件加速的Direct3D。第37页,共114页,编辑于2022年,星期五nQtVisual
32、StudioIntegration可使程序员在MicrosoftVisualStudio2005、2008和2010环境下创建、生成、调试和运行Qt项目,包含有:n代码完成和语法标识功能;n使用集成的QtDesigner的强大的GUI布局和格式构建器;n集成了VisualStudio在线帮助的Qt文档;n最常用的Qt应用程序样式模板。第38页,共114页,编辑于2022年,星期五nQt类库包括用来构建高级GUI应用程序所需的所有功能,包含有:n一整套可定制的UI控件或widget;n使用OpenGL或Direct3D的3D图形支持;n强大的多线程功能;n可处理上百万个对象的2D图形画布;n集成
33、了Phonon多媒体框架;nWebKit集成;n网络、XML和数据库功能;nECMA标准脚本引擎。第39页,共114页,编辑于2022年,星期五nQt包括一套集成的开发工具,可加快在Windows平台上的开发,包含有:n跨平台QtIDE;n拖放可视化GUI构建器;n国际化和翻译工具;n可定制的HTML帮助文件阅读器。第40页,共114页,编辑于2022年,星期五13.5.2 Qt的授权的授权nQt主要是由诺基亚QtDevelopmentFrameworks部门开发和维护的。诺基亚通过开源授权(LGPL(GNU宽通用公共授权)和GPL(GNU通用公共授权)以及商业授权的方式对Qt进行授权,这样开
34、源项目就可以使用Qt进行开发。Qt产品规划和源代码库现都已面向公众开放,这样Qt开发人员就可以通过为Qt和Qt相关的项目提供代码、翻译、示例和其他方式的贡献,协助引导和明确Qt未来发展方向(http:/qt.gitorious.org)。nQt通过商业、LGPL和GPL3种授权方式提供Qt产品。按照授权协议的不同,Qt被按不同的版本发行。nQt商业版用于商业软件的开发,提供免费升级和技术支持服务。第41页,共114页,编辑于2022年,星期五nQt开源版是Qt的非商业版本,是为开发自由和开放源码软件提供的Unix/X11版本。在GNUGPL或LGPL许可证下,它可以免费下载和使用。如果是基于G
35、PL协议来开发软件的话,用户所开发的东西都要以GPL协议发布开源并免费提供源码。n此外,Qt还提供了免费评估版、快照、beta测试版、预览版等多种版本。其中免费评估版Qt适用于Windows、Mac、Linux、嵌入式Linux和WindowsCE平台,它不但具备全部功能,还带有源代码。Nokia会在用户进行评估期间提供技术支持。而快照、beta测试版、预览版等版本则得不到Qt的支持。第42页,共114页,编辑于2022年,星期五nQt开源版和商业版有如下不同:n功能不完全相同。在源码上两者基本一致,但是开源版缺少一些数据库插件,因为这些插件都是基于特定数据库客户端程序的,由于很多商业数据库的
36、客户端程序并不是开源的,所以插件就无法开源。一般开源版不支持商业数据库的驱动,需要自己写驱动或者是采用第三方的驱动。另外,在Windows版本上,开源版没有ActiveQt这个模块,它可以用来开发ActiveX程序。n收费不同。开源版不收费。商业版根据版本不同,费用不同。n服务不同。开源版不提供服务,但可以到一些开放的maillist和论坛讨论;商业版有一年的免费技术和下载支持,有问题就直接发给。n最本质的不同是协议不同。使用开源版开发需要遵循GPL或者QPL,而使用商业版就没有这个限制。第43页,共114页,编辑于2022年,星期五nQt4.5版本以后,Qt的安装有了多种选择,既可以通过源代
37、码包来编译安装,也可以利用Qt官方网站提供的最新SDK来实现安装。QtSDK包括了Qt库、QtCreatorIDE和Qt工具,QtSDK的架构如图13.5.1所示。图13.5.1QtSDK的架构第44页,共114页,编辑于2022年,星期五n登录到Qt的官方网站(http:/ Qt Creatorn1.Qt Creator简介简介nQtCreator在2009年3月3日正式发布(连同Qt4.5),并提供LGPL许可的源代码。QtCreator是Qt被Nokia收购后推出的一款全新的跨平台开源IDE(集成开发环境),是QtSDK的一部分。QtCreator的设计目标是帮助新Qt用户更快速入门并运
38、行项目,使开发人员能够利用Qt这个应用程序框架更加快速及简易地完成任务,提高工作效率。由于捆绑了最新Qt库二进制软件包和附加的开发工具,并作为QtSDK的一部分,QtCreator在单独的安装程序内提供了进行跨平台Qt开发所需的全部工具。nQtCreator包括:高级C+和JavaScript代码编辑器,集成用户界面设计器,项目和构建管理工具,gdb和CDB调试程序的支持,版本控制的支持,移动用户界面模拟器,为桌面和移动目标平台提供支持。第46页,共114页,编辑于2022年,星期五nQtCreator具有如下特色:n代码编辑器支持代码高亮以及自动完成功能;nQt4工程向导(ProjectWi
39、zard)。使用ProjectWizard,用户可以轻松创建基于控制台的应用程序,GUI应用程序以及C+类库等多种类型的工程;n无缝集成了QtDesigner,使用者不用单独打开QtDesigner即可完成用户界面的创建工作。用户只需在ProjectExplorer中双击.ui文件,即可调用集成的QtDesigner完成编辑工作;n帮助文件浏览器QtAssistant可以查阅相关的Qt文档和示例程序;n集成版本控制器,如git;SVN;n提供GDB和CDB侦错程式图形界面前端,可以使用GNU的GDB(开源版)以及Microsoft的CDB作为调试器(商业版);n默认使用qmake构建项目,也可
40、支持CMake等其他构建工具。qmake工程文件格式化功能支持将.pro文件作为工程描述文件;n使用g+作为编译器。第47页,共114页,编辑于2022年,星期五nQtCreator一般与QtSDK一起安装。也可以选择Nokia提供的独立安装程序来安装。登录到Qt的官方网站(http:/ Creator的组成的组成nQtCreator主要由菜单(MenuBar)、模式选择器(ModeSelectors)、项目浏览器(ProjectInspector)、代码编辑器(CodeEdit)、输出面板(OutputPane)、边栏(Sidebar)、快速导航面板(QuickOpenPane)等组件构成。
41、在编辑模式下,QtCreator界面的主要的组成部分如图13.5.4所示。图13.5.4QtCreator的界面第49页,共114页,编辑于2022年,星期五n3.QtCreator的模式选择器nQtCreator2.4.1有七种工作模式,分别是WelcomeMode、EditMode、DesignMode、DebugMode、ProjectMode、AnalyzeMode和HelpMode。n模式选择器(ModeSelectors)允许开发者在处理不同的任务时,可以快速切换工作模式,比如编辑代码、浏览帮助、设置编译器环境等。在切换时,可以通过在界面左边的模式选择器分栏上单击或使用相对应的快捷
42、键。n(1)欢迎模式(WelcomeMode)nWelcome模式的界面如图13.5.5所示。在Welcome模式,可以实现以下功能:n阅读QtLabsBlog上的新闻n打开样例工程n创建和打开工程n向QtCreator项目组反馈意见n打开新近使用的项目第50页,共114页,编辑于2022年,星期五图13.5.5Welcome模式的界面第51页,共114页,编辑于2022年,星期五n(2)编辑模式(EditMode)nEdit模式的界面如图13.5.6所示。在Edit模式,用户可以编辑项目和源代码文件。可以利用在模式选择器右边的边栏来实现文件导航。图13.5.6Edit模式的界面第52页,共1
43、14页,编辑于2022年,星期五n(3)设计模式(DesignMode)nDesign模式的界面如图13.5.7所示。Design模式可以用来设计和开发用户界面,主要是由(.ui)文件来表示。图13.5.7Design模式的界面第53页,共114页,编辑于2022年,星期五n(4)调试模式(DebugMode)nDebug模式的界面如图13.5.8所示。Debug模式主要用来辅助程序员观察应用程序的状态,以此来调试程序。图13.5.8Debug模式的界面第54页,共114页,编辑于2022年,星期五n(5)项目模式(ProjectMode)nProject模式的界面如图13.5.9所示。在Pr
44、oject模式,开发者可以查看所有项目的列表,并可以设置某一个项目为当前的活动项目。还可以针对选择的项目,进行构建(build)、运行(run)以及代码编辑器等多个方面的详细设置。图13.5.9Project模式的界面第55页,共114页,编辑于2022年,星期五n(6)分析模式(AnalyzeMode)nAnalyze模式的界面如图13.5.10所示。在Analyze模式,开发者可以使用代码分析工具来检测内存泄露和构建C+和QML代码架构。图13.5.10Analyze模式的界面第56页,共114页,编辑于2022年,星期五n(7)帮助模式(HelpMode)nHelp模式的界面如图13.5
45、.11所示。在Help模式的界面中,主要集成了Qt文档和示例中的相关内容,可以使用户不必另行打印QtAssistant,就可以在QtCreator的Help模式下获得帮助。图13.5.11Help模式的界面第57页,共114页,编辑于2022年,星期五13.5.4 Qt Designern1.Qt Designer简介简介nQtDesigner是强大的跨平台GUI布局和格式构建器。QtDesigner是QtSDK的组成部分之一。QtDesigner的功能和优势如下:n使用拖放功能快速设计用户界面;n定制widget,或从标准widget库中选择widget;n以本地外观快速预览格式;n通过界面
46、原型生成C+或Java代码;n可以将QtDesigner与VisualStudio或EclipseIDE配合使用;n使用Qt信号与槽机制构建功能齐全的用户界面。nQtDesigner是一个可视化的基于Qt的用户界面设计工具,是QtSDK的一部分,用来生成.ui定义文件,而不考虑具体的语言。第58页,共114页,编辑于2022年,星期五nQtDesigner是一个所见即所得的全方位GUI构造器,它所设计出来的用户界面能够在多种平台上使用。利用QtDesigner,可以拖放各种Qt控件构造图形用户界面并可预览效果。n使用QtDesigner,开发人员既可以创建“对话框”样式的应用程序、又可以创建带
47、有菜单、工具栏、气球帮助以及其他标准功能的“主窗口”样式的应用程序。QtDesigner提供了多种窗体模板,开发人员可以创建自己的模板,确保某一应用程序或某一系列应用程序界面的一致性。编程人员可以创建自己的自定义窗体,这些窗体可以轻松与QtDesigner集成。nQtDesigner支持采用基于窗体的方式来开发应用程序。窗体是由用户界面(.ui)文件来表示的,这种文件既可以转换成C+并编译成一个应用程序,也可以在运行时加以处理,从而生成动态用户界面。Qt的构建系统能将用户界面的编译构建过程自动化,使设计过程更轻松。第59页,共114页,编辑于2022年,星期五n2.Qt Designer的组成
48、的组成QtDesigner主要由窗口部件盒、对象查看器、属性编辑器、资源浏览器、动作编辑器和信号/槽编辑器组成,且它们都是锚接窗口,通常排列在窗体的两侧,也可以定制它们的位置。打开的QtDesigner的界面如13.5.12所示。利用QtDesigner,可以拖放各种Qt控件构造图形用户界面并可以预览效果。13.5.12QtDesigner的界面第60页,共114页,编辑于2022年,星期五n3.Qt Designer的使用的使用 使用QtDesigner设计窗体的步骤如下:n(1)启动QtDesigner。在安装QtSDK之后,如果在“开始”“程序”“QtSDK”下找不到QtDesigner
49、的快捷方式,可到QtSDK的安装路径下寻找QtDesigner应用程序,如:D:QtSDKDesktopQt4.8.1mingwbin。n(2)新建窗体对话框。通过“File”“New”,来建立窗体对话框,如图13.5.13所示。图13.5.13新建窗体对话框第61页,共114页,编辑于2022年,星期五n(3)示例设计:显示和隐藏“HelloQt!”该示例完成的功能是:设计两个按钮和一个Label,当点击“Show”按钮时,显示“HelloQt!”;当点击“Hide”按钮时,隐藏“HelloQt!”。从左侧的窗口部件盒中拖出两个“PushButton”和一个“Label”,放在窗体上。如图1
50、3.5.14所示。图13.5.14添加窗口部件第62页,共114页,编辑于2022年,星期五n修改窗口部件的属性。将两个按钮的名称分别改为“Show”和“Hide”,将Label名称改为“HelloQt!”,如图13.5.15所示。图13.5.15修改窗口部件属性第63页,共114页,编辑于2022年,星期五n单击菜单“Edit”“EditSignals/Slots”,此时,当鼠标指向按钮或Label时,按钮或Label是红色。左键拖动“Show”到“HelloQt!”,如图13.5.16所示。释放鼠标,会弹出信号和槽的对话框,如图13.5.17所示。图13.5.16拖动“Show”到“Hel