第13章 图形用户接口.ppt_第1页
第13章 图形用户接口.ppt_第2页
第13章 图形用户接口.ppt_第3页
第13章 图形用户接口.ppt_第4页
第13章 图形用户接口.ppt_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

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

文档简介

1、第13章 图形用户接口(GUI),说明:由于本课程内容较多,各学校开课的课时不同,讲授的内容也有不同,本课件本着尽可能的多的提供素材,以满足各位老师不同的需要。 希望各位老师根据自己的讲授需要,对课件进行剪裁编排,以适合自己的课程要求。,定义,图形用户接口(Graphics User Interface,GUI),又叫桌面系统、窗口管理系统、图形操作环境、图形用户界面等,是操作系统和用户的人机接口。 GUI极大地方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而可以通过窗口、菜单方便地进行操作。,13.1图形用户接口的层次结构,13.1.1 图形基础设施,图形基础设施是一种底层的图形驱

2、动引擎,一般是由操作系统提供。它是用作其他更高一层图形或者图形应用程序的基本函数库/依赖库,在其之上可以针对某些特定应用需求做进一步的封装。譬如,在对于只需要单任务的低端应用,可以以API函数的形式,封装成静态或者动态的高级图形函数库。而在更多的场合,用户是需要类似Windows的桌面系统,这样就要构建多任务GUI窗口管理系统。在Linux环境下,常见的图形基础设施有SVGALib(VGA)、X Window(Xlib)、LibGGI和FrameBuffer等。,13.1.2 高级图形函数库,高级图形函数库提供的图形界面编程接口主要分为两大类,一类只提供基本的画点绘线、文本区域处理等,如SDL

3、(standard drawing library);另一类就是以窗口部件(widget,亦称为控件、部件等)形式,采用面向对象方式进行可视化的编程,可用于嵌入式GUI系统(需要诸如pThread等消息处理函数库的支持)和可以运行在GUI系统上的应用程序的开发,诸如GTK,QT和PEG等。,13.1.3 GUI窗口管理系统,GUI窗口管理系统是一个非常复杂的系统,很多时候甚至就类似于一个操作系统,它是嵌入式系统设计中迄今为止没有很好解决的难点之一。目前,在桌面GUI系统领域主要有X-Windows、KDE、GNOME等,在嵌入式系统领域,主要有MiniGUI、Nano-X(Microwindo

4、ws)、OpenGUI和Qpe(Qt Palmtop Environment)等。,13.2 桌面Linux系统中GUI,KDE(Kool Desktop Environment)与GNOME(GNU Network Object Environment)是目前桌面Linux/UNIX系统中最常用的桌面GUI窗口系统。MiniGUI、Qt/E和Nano-X则是嵌入式系统中广泛应用的嵌入式GUI系统。,13.2.1 KDE,KDE是1996年德国Matthias Ettrich发起了符合GPL规范的开源项目,与之前各种基于X Window的图形用户环境不同的是,KDE并非针对系统管理员等高级用户

5、,而是锁定为普通的终端用户,即希望KDE能够包含用户日常应用所需要的所有应用程序组件,例如Web浏览器、电子邮件客户端、办公套件、图形图像处理软件等。,13.2.2 GNOME,GNOME是1997年墨西哥年仅26岁的程序员Miguel De Icaza发起的开源项目,目前诸如RedHat/Fedora、SuseLinux发行版都默认使用它。它功能上的特性和KDE类似,并且相对要轻便些,13.3 嵌入式Linux系统GUI,在现代的嵌入式人机系统中,人是用户和主动的参与者,能与机器对话,要求机器对人的各种动作做出响应。因此,图形用户界面已经成为嵌入式应用系统研制中的重点之一。典型的嵌入式GUI

6、 系统有紧缩的 X Window 系统、MiniGUI、Nano-X(MicroWindows)、Tiny X(紧缩版的X-Windows)、OpenGUI、QT/Embedded 等.,13.3.1 MiniGUI,MiniGUI是1998年底推出的一款面向嵌入式系统或者实时系统的GUI系统,是国内最早出现的、在国际上有一定知名度的几个自由软件项目之一,最先是由原清华大学教师魏永明先生主持开发,现由北京飞漫软件技术有限公司()进行商业化维护和运作。自1999 年初以遵循 GPL 协议发布第一个版本以来,到现在已历经十年多时间,目前最新版本是MiniGUI V3.0.12。经过飞漫软件多年的精

7、心打造,MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统。目前,MiniGUI 已经广泛应用于通讯、医疗、工控、电力、机顶盒、多媒体终端等领域。一些企业如华为、中兴通讯、大唐移动、长虹等已经成功的使用 MiniGUI进行产品开发,约有 60% 获得入网许可证的 TD-SCDMA 手机使用 MiniGUI 作为其嵌入式图形平台,以支撑浏览器、可视电话等 3G 应用软件的运行。,北京飞漫软件技术有限公司提供详细的技术文档支持MiniGUI的应用。有关MiniGUI 3.0 更多的内容请登录 1. MiniGUI 技术白皮书 for V3.0 2. Datasheet

8、 for MiniGUI V3.0 3. MiniGUI 3.0编程指南 4. MiniGUI 3.0用户手册 5. MiniGUI API 参考手册V3.0.12 进程版 6. MiniGUI API 参考手册V3.0.12 线程版 7. MiniGUI API 参考手册V3.0.12 单机版 8. mGPlus API 参考手册V1.2.4,13.3.2 Qtopia,Qtopia是嵌入式GUI窗口系统,也叫做嵌入式Linux的桌面系统,是Trolltech 面向嵌入式设备的Qt掌上机环境(Qt Palmtop Environment,Qpe)。它建立在Qt/ Embedded(即Qt/E

9、)之上,基于Qt/E开发出来的程序就可以放到这个桌面上,为开发提供了一个类似于Windows这样易于使用的界面。Qtopia分为开源的PDA版本Qtopia和收费的手机版Qtopia,前者提供PDA的桌面系统基本源代码,后者还包括手机模块代码等。,13.3.3 Nano-X,Nano-X的前身就是Century Software 推出的开源项目Microwindows。它主要采用C语言进行开发,采用C/S体系结构,提供了相对完善的图形功能,并且具有分层设计。最底层是屏幕和输入设备驱动程序(关于键盘或鼠标)来与实际硬件交互。在中间层,可移植的图形引擎提供对线的绘制、区域的填充、多边形、裁剪以及颜

10、色模型的支持。,13.4 MiniGUI应用入门13.4.1 MiniGUI的软件架构,MiniGUI具有良好的软件架构,通过抽象层将MiniGUI 上层和底层操作系统隔离开来。如图13.4.1所示,基于MiniGUI 的应用程序一般通过ANSI C 库、操作系统和驱动程序接口以及MiniGUI 自身提供的API 来实现自己的功能;MiniGUI 中的“可移植层”可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关心底层的硬件平台输出和输入设备。,图13.4.1 MiniGUI的层次结构,1. 图形抽象层(Graphics Abstraction Layer,GAL) 图形抽象层将

11、来自不同操作系统或设备的图形接口进行抽象,为 MiniGUI 上层提供统一的图形接口。在图形抽象层内,包含有针对 Linux FB 设备、eCos LCD 设备等的软件组成部分。这些软件组成部分通过调用底层设备的接口来实现具体的图形抽象层操作,如打开设备、设置分辨率及显示模式、关闭设备等。这些用于适配图形抽象层接口的软件组成部分被称为“引擎(engine)”,其概念和操作系统中的设备驱动程序类似。,2. 输入抽象层(Input Abstraction Layer,IAL) 与GAL类似,输入抽象层将MiniGUI 涉及的所有输入设备,如键盘(keyboard)、小键盘(keypad)、鼠标(m

12、ouse)、触摸屏(touch screen)等抽象了出来,为上层提供一致的接口。要支持不同的键盘、触摸屏或者鼠标接口,则通过为 IAL 编写不同的输入引擎实现。MiniGUI 通过 IAL 及其输入引擎,提供对 Linux 控制台(键盘及鼠标)、触摸屏、遥控器、小键盘等输入设备的支持。,3.图形设备接口(Graphics Device Interfaces,GDI) 该模块基于图形抽象层为上层应用程序提供图形相关的接口,如绘制曲线、输出文本、填充矩形等等。图形设备接口中含包含其他比较独立的子模块,如字体字符集(font and charset)支持、图像(image)支持等。 4.消息处理模

13、块(Messaging Module) 该模块在输入抽象层基础上,实现了 MiniGUI 的消息处理机制,为上层提供了完备的消息管理接口。众所周知,几乎所有的GUI 系统本质上都是事件驱动的,系统自身的运行,以及GUI 应用程序的运行,都依赖于消息处理模块。,5. 多窗口处理模块(Windowing Module)和控件(Control 或 Widget) 基于图形设备接口和消息处理模块,MiniGUI 实现了多窗口处理模块。该模块为上层应用程序提供了创建主窗口和控件的基本接口,并负责维护控件类。控件类是用来实现控件代码重用的重要概念,利用控件类(control class),我们可以创建属于

14、某个控件类的多个控件实例(instance),从而让这些控件实例使用同一个控件类的代码,这样,我们就实现了类似 C+ 那样的类和实例概念,从而可以最大程度上重复利用已有代码,并提高软件的可维护性。MiniGUI 的控件模块实现了常见的 GUI 控件,如静态框、按钮、编辑框、列表框、下拉框等等。 6. 外观支持(Look and Feel) 这个模块是 MiniGUI V3.0 提供给上层应用程序的接口,可用来定制 MiniGUI 窗口、控件的绘制。在 MiniGUI V3.0 之前的版本中,对主窗口和控件的定制能力,还没有被抽离出来形成独立的模块,但我们仍然可以通过配置选项让 MiniGUI

15、的主窗口、控件具有三种显示风格,分别是:类似 PC 的三维风格(PC3D)、平板风格(FLAT)、流行风格(FASHION)。在 MiniGUI 3.0 中,主窗口和控件的外观可完全由应用程序自行定制,在创建主窗口或者控件时,指定外观渲染器(renderer)的名称,就可以让主窗口或者控件具有各自不同的外观。,5. 多窗口处理模块(Windowing Module)和控件 (Control 或 Widget) 基于图形设备接口和消息处理模块,MiniGUI 实现了多窗口处理模块。该模块为上层应用程序提供了创建主窗口和控件的基本接口,并负责维护控件类。控件类是用来实现控件代码重用的重要概念,利用

16、控件类(control class),我们可以创建属于某个控件类的多个控件实例(instance),从而让这些控件实例使用同一个控件类的代码,这样,我们就实现了类似 C+ 那样的类和实例概念,从而可以最大程度上重复利用已有代码,并提高软件的可维护性。MiniGUI 的控件模块实现了常见的 GUI 控件,如静态框、按钮、编辑框、列表框、下拉框等等。,13.4.2 MiniGUI 的开发环境,基于 MiniGUI 的开发可以在 Linux 或 Windows 操作系统下进行。由于 MiniGUI 完全用 C 来编写,具有非常好的移植性,也使得 MiniGUI 应用程序的交叉编译工作十分方便。 为嵌

17、入式设备编写的应用程序可以在任何安装在针对该设备的交叉编译工具链的平台上进行编译。最常见的方式是在 Linux 环境下安装 gcc 的交叉编译器,对应用程序进行编译。对于某些嵌入式系统(如 VxWorks,uC/OS-II),则一般在 Windows 下安装相应的编译环境(如 Tornado、ADS等),对应用程序进行编译。 如果 MiniGUI 应用程序在 Linux 环境下开发,它可以有两种运行方式。一种是直接在内核支持的FrameBuffer 控制台下运行,一种则是在一个模拟 FrameBuffer 的 X11 应用程序(qvfb)下运行并完成调试。,如果 MiniGUI 应用程序在 W

18、indows 下开发,则可以使用 Visual Studio 集成开发环境进行开发及编译,并在模拟 FrameBuffer 的 Windows 应用程序(wvfb)下运行应用程序并调试(如图13.4.2所示)。,图13.4.2 在wvfb 模拟器上运行MiniGUI 应用程序,直接在模拟器或控制台下运行调试 MiniGUI 应用程序,大大方便了嵌入式程序的开发,避免了用户重复刷写嵌入式设备的工作。同时也使得用户可以在开发主机上使用标准的调试器对应用程序进行调试。MiniGUI V3.0推出的xvfb兼容MiniGUI V2.0.X以前的qvfb,wvfb。,13.4.3 MiniGUI的移植,

19、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 的引导选项。,(2)在PC上编译并安装MiniGUI开发包 第一步,在PC 上编译并安装libminigui 第二步,在PC 上安装MiniGUI 的资源 第三步,编译应用程序例子,(3)Redhat上Min

20、iGUI 的运行 由于必须要在控制台模式才能运行MiniGUI。要启动控制台,按住CtrlAlt 的同时, 按F1F6 中的任意一个均可,然后登录系统,进入sample 目录,直接运行即可。,2. 交叉编译,并在嵌入式目标机上运行MiniGUI (1) 交叉编译libminigui (2) 安装MiniGUI 资源文件 (3) 编译应用程序例子 (4) 在嵌入式目标机上运行MiniGUI,13.4.4 MiniGUI的运行模式,MiniGUI是采用C语言开发的,为了适合不同的操作系统环境,MiniGUI可以配置成三种不同的运行模式。 (1)MiniGUI-Threads模式 运行在 MiniG

21、UI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式非常适合于大多数传统意义上的嵌入式操作系统,比如 C/OS-II、eCos、VxWorks、pSOS 等等。当然,在 Linux 和 Clinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式运行。 (2)MiniGUI-Processes模式 该模式在1.6.8 及早期版本中称为“MiniGUI-Lite”,它与MiniGUI-Threads 相反,MiniGUI-Processes 上的每个程序是独立的进程,每个进程也可以建立多个窗口。MiniGUI-P

22、rocesses 适合于具有完整 UNIX 特性的嵌入式操作系统,比如嵌入式 Linux。,(3)MiniGUI-Standalone模式 在Standalone模式, MiniGUI 可以以独立进程的方式运行,既不需要多线程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 Clinux 的嵌入式产品中。 一般而言,MiniGUI-Standalone模式的适用面最广,可以支持几乎所有的操作系统(目前只用来提供对Linux/Clinux操作系统的支持);MiniGUI-Threads模式的适用面次之,可运行在支持多任务的实时嵌入式操作系统,或是具备完整UNIX特性的普通

23、操作系统;MiniGUI-Process模式的适用面较小,它仅适合具备完整UNIX特性的嵌入式操作系统,如Linux。 但不论采用哪种运行模式,MiniGUI为上层应用程序提供了最大程度上的一致性,只有少数几个涉及初始化的接口在不同运行模式上有所不同。,13.5. Qt应用入门13.5.1 Qt支持的平台,Qt Software前身属于始创于1994年的Trolltech,1996年Qt上市。Trolltech于2008年6月被Nokia收购()。目前Qt是一个已经形成事实上的标准的C+框架,用于高性能的跨平台软件开发,Qt已成为数以万计的商业和开源应用程序的基础。 Qt是一个跨平台的应用程序

24、和 UI 框架,它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统(如Embedded Linux,Mac OS,Windows,Linux/X11,Windows CE,Symbian,Maemo等)部署这些应用程序。其中:,13.5. Qt应用入门13.5.1 Qt支持的平台,1. Qt for Embedded Linux Qt for Embedded Linux 是用于嵌入式 Linux(Embedded Linux)所支持设备的应用程序架构,可以使用 Qt 创建具有独特用户体验的具备高效内存效率的

25、设备和应用程序。Qt 可以在任何支持 Linux 的平台上运行。 Qt 除了提供所有工具以及 API 与类库,(如Qt WebKit)外,Qt for Embedded Linux 还提供用于最优化嵌入式开发环境的主要组件。,Qt 构建在标准的 API 上,应用于嵌入式 Linux 设备,并带有自己的紧凑视窗系统(QWS)。利用Qt的API,只须少数几行代码便可以实现高端的功能。基于 Qt 的应用程序可直接写入Linux 帧缓冲,可减少内存消耗,可利用硬件加速图形的优势,可编译移除不常使用的组件与功能,解除了对 X11 视窗系统的需求。 Qt for Embedded Linux提供一个虚拟帧

26、缓冲器(QVFb),可以采用点对点逐像素匹配物理设备显示。IPC (进程间通讯)可以创建丰富的多应用程序用户体验。Qt 支持嵌入式 Linux 上的多种字体格式,包括:TrueType, Postscript Type1 与 Qt 预呈现字体。Qt 扩展了Unicode 支持,包括:构建时自动数据抽取,运行时自动更新。另外Qt还提供定制字体格式的插件,允许在运行时轻松添加新字体引擎。应用程序间的字体共享功能可以提高内存效率。,采用Qt for Embedded Linux创建的应用程序可以移植到 Windows CE 和Qt支持的其它任何操作系统上。 Qt for Embedded Linux

27、的基本要求如下: 开发环境:Linux 内核 2.4 或更高,GCC 版本 3.3 或更高,用于 MIPS GCC 版本 3.4. 或更高。 占用存储空间:存储空间取决于配置,压缩后: 1.7 - 4.1 MB,未压缩: 3.6 - 9.0 MB 硬件平台:易于载入任何支持带 C+ 编译器和帧缓冲器驱动 Linux 的处理器。支持 ARM, x86, MIPS, PowerPC。 注意:对于Qt5.0,Qt for Embedded Linux将不作为一个单独的平台存在。目前Qt的版本为4.8。,2. Linux/X11 Qt Qt 是综合性的应用程序和 UI 框架,用于开发 Linux/X1

28、1 应用程序,无须重新编写源代码,便可跨其他桌面和嵌入式操作系统进行部署。 Qt 支持多种 X11 平台,如 Solaris、AIX、HP-UX 和即将推出的 Maemo 6。 Qt 提供跨平台 Qt IDE、拖放可视化 GUI 构建器、翻译工具、可定制的 HTML 帮助文件阅读器、集成的Eclipse 和 KDevelop IDE。Qt提供的集成开发工具,可加快在 X11 平台上的开发。,Qt 类库包括用来生成高级 GUI 应用程序所需的所有功能: 一整套可定制的 UI 控件或 widget; 集成了OpenGL,支持 3D 图形; 强大的 多线程功能; 可处理上百万个对象的2D 图形画布;

29、 集成了 Phonon 多媒体框架; WebKit 集成; 网络、XML 和数据库功能; ECMA 标准脚本引擎。,3. Windows Qt Qt 是综合性的应用程序和 UI 框架,用于开发 Windows 应用程序,无须重新编写源代码,便可跨其他桌面和嵌入式操作系统进行部署。Qt 应用程序支持 Windows Vista、Server 2003、XP、NT4、Me/98 和 Windows CE。Windows的Qt包含有: 直观的类库; 集成的开发工具; 集成 Visual Studio; 在 Qt 应用程序中使用 ActiveX 控件; 集成了用于图形硬件加速的 Direct3D。,Q

30、t Visual Studio Integration 可使程序员在Microsoft Visual Studio 2005 、2008和2010 环境下创建、生成、调试和运行 Qt 项目,包含有: 代码完成和语法标识功能; 使用集成的 Qt Designer 的强大的 GUI 布局和格式构建器; 集成了 Visual Studio 在线帮助的Qt 文档; 最常用的 Qt 应用程序样式模板。,Qt 类库包括用来构建高级 GUI 应用程序所需的所有功能,包含有: 一整套可定制的 UI 控件或 widget; 使用 OpenGL 或 Direct3D 的3D 图形支持; 强大的多线程功能; 可处理

31、上百万个对象的2D 图形画布; 集成了 Phonon 多媒体框架; WebKit 集成; 网络、 XML 和数据库功能; ECMA 标准脚本引擎。,Qt 包括一套集成的开发工具,可加快在 Windows 平台上的开发,包含有: 跨平台 Qt IDE; 拖放 可视化 GUI 构建器; 国际化 和翻译工具; 可定制的 HTML 帮助文件阅读器。,13.5.2 Qt的授权,Qt 主要是由 诺基亚Qt Development Frameworks部门开发和维护的。诺基亚通过开源授权(LGPL(GNU宽通用公共授权)和GPL(GNU通用公共授权)以及商业授权的方式对 Qt 进行授权,这样开源项目就可以使

32、用 Qt 进行开发。Qt 产品规划和源代码库现都已面向公众开放,这样Qt开发人员就可以通过为 Qt 和 Qt 相关的项目提供代码、翻译、示例和其他方式的贡献,协助引导和明确 Qt 未来发展方向(http:/qt. gitorious. org)。 Qt通过商业、LGPL和GPL 3种授权方式提供Qt产品。按照授权协议的不同,Qt被按不同的版本发行。 Qt商业版用于商业软件的开发,提供免费升级和技术支持服务。,Qt开源版是Qt的非商业版本,是为开发自由和开放源码软件提供的Unix/X11版本。在GNU GPL或LGPL许可证下,它可以免费下载和使用。如果是基于GPL协议来开发软件的话,用户所开发

33、的东西都要以GPL协议发布开源并免费提供源码。 此外,Qt还提供了免费评估版、快照、beta测试版、预览版等多种版本。其中免费评估版Qt适用于Windows、 Mac、 Linux、嵌入式Linux和Windows CE平台,它不但具备全部功能,还带有源代码。Nokia会在用户进行评估期间提供技术支持。而快照、beta测试版、预览版等版本则得不到Qt的支持。,Qt开源版和商业版有如下不同: 功能不完全相同。在源码上两者基本一致,但是开源版缺少一些数据库插件,因为这些插件都是基于特定数据库客户端程序的,由于很多商业数据库的客户端程序并不是开源的,所以插件就无法开源。一般开源版不支持商业数据库的驱

34、动,需要自己写驱动或者是采用第三方的驱动。另外,在Windows版本上,开源版没有ActiveQt这个模块,它可以用来开发ActiveX程序。 收费不同。开源版不收费。商业版根据版本不同,费用不同。 服务不同。开源版不提供服务,但可以到一些开放的maillist和论坛讨论;商业版有一年的免费技术和下载支持,有问题就直接发给。 最本质的不同是协议不同。使用开源版开发需要遵循GPL或者QPL,而使用商业版就没有这个限制。,Qt4.5版本以后,Qt的安装有了多种选择,既可以通过源代码包来编译安装,也可以利用Qt官方网站提供的最新SDK来实现安装。Qt SDK包括了Qt库、Qt Creator IDE

35、和Qt工具,Qt SDK的架构如图13.5.1所示。,图13.5.1 Qt SDK的架构,登录到Qt的官方网站(,图13.5.2 Qt SDK和Qt下载页面,13.5.3 Qt Creator,1. Qt Creator简介 Qt Creator在2009年3月3日正式发布(连同Qt 4. 5 ),并提供LGPL许可的源代码。Qt Creator是Qt被Nokia收购后推出的一款全新的跨平台开源IDE(集成开发环境),是Qt SDK的一部分。Qt Creator的设计目标是帮助新 Qt 用户更快速入门并运行项目,使开发人员能够利用Qt这个应用程序框架更加快速及简易地完成任务,提高工作效率。由于

36、捆绑了最新Qt库二进制软件包和附加的开发工具,并作为Qt SDK的一部分,Qt Creator在单独的安装程序内提供了进行跨平台Qt开发所需的全部工具。 Qt Creator包括:高级 C+ 和 JavaScript 代码编辑器,集成用户界面设计器,项目和构建管理工具,gdb 和 CDB 调试程序的支持,版本控制的支持,移动用户界面模拟器,为桌面和移动目标平台提供支持。,Qt Creator具有如下特色: 代码编辑器支持代码高亮以及自动完成功能; Qt 4工程向导(Project Wizard)。使用Project Wizard,用户可以轻松创建基于控制台的应用程序,GUI应用程序以及C+类库

37、等多种类型的工程; 无缝集成了Qt Designer,使用者不用单独打开Qt Designer即可完成用户界面的创建工作。用户只需在Project Explorer中双击.ui文件,即可调用集成的Qt Designer完成编辑工作; 帮助文件浏览器Qt Assistant可以查阅相关的Qt文档和示例程序; 集成版本控制器,如git;SVN; 提供GDB和CDB侦错程式图形界面前端,可以使用GNU的GDB(开源版)以及Microsoft的CDB作为调试器(商业版); 默认使用qmake构建项目,也可支持CMake等其他构建工具。qmake工程文件格式化功能支持将.pro文件作为工程描述文件; 使

38、用g+作为编译器。,Qt Creator一般与Qt SDK一起安装。也可以选择Nokia提供的独立安装程序来安装。登录到Qt的官方网站(,图13.5.3 Qt Creator下载页面,2. Qt Creator的组成 Qt Creator主要由菜单(Menu Bar)、模式选择器(Mode Selectors)、项目浏览器(Project Inspector)、代码编辑器(Code Edit)、输出面板(Output Pane)、边栏(Sidebar)、快速导航面板(Quick Open Pane)等组件构成。在编辑模式下,Qt Creator界面的主要的组成部分如图13.5.4所示。,图13

39、.5.4 Qt Creator的界面,3. Qt Creator的模式选择器 Qt Creator2.4.1有七种工作模式,分别是Welcome Mode、Edit Mode、Design Mode、Debug Mode、Project Mode、Analyze Mode和Help Mode。 模式选择器(Mode Selectors)允许开发者在处理不同的任务时,可以快速切换工作模式,比如编辑代码、浏览帮助、设置编译器环境等。在切换时,可以通过在界面左边的模式选择器分栏上单击或使用相对应的快捷键。 (1)欢迎模式(Welcome Mode) Welcome模式的界面如图13.5.5所示。在W

40、elcome模式,可以实现以下功能: 阅读Qt Labs Blog上的新闻 打开样例工程 创建和打开工程 向Qt Creator项目组反馈意见 打开新近使用的项目,图13.5.5 Welcome模式的界面,(2)编辑模式(Edit Mode) Edit模式的界面如图13.5.6所示。在Edit模式,用户可以编辑项目和源代码文件。可以利用在模式选择器右边的边栏来实现文件导航。,图13.5.6 Edit模式的界面,(3)设计模式(Design Mode) Design模式的界面如图13.5.7所示。Design模式可以用来设计和开发用户界面,主要是由(.ui)文件来表示。,图13.5.7 Desi

41、gn模式的界面,(4)调试模式(Debug Mode) Debug模式的界面如图13.5.8所示。Debug模式主要用来辅助程序员观察应用程序的状态,以此来调试程序。,图13.5.8 Debug模式的界面,(5)项目模式(Project Mode) Project模式的界面如图13.5.9所示。在Project模式,开发者可以查看所有项目的列表,并可以设置某一个项目为当前的活动项目。还可以针对选择的项目,进行构建(build)、运行(run)以及代码编辑器等多个方面的详细设置。,图13.5.9 Project模式的界面,(6)分析模式(Analyze Mode) Analyze模式的界面如图1

42、3.5.10所示。在Analyze模式,开发者可以使用代码分析工具来检测内存泄露和构建C+和QML代码架构。,图13.5.10 Analyze模式的界面,(7)帮助模式(Help Mode) Help模式的界面如图13.5.11所示。在Help模式的界面中,主要集成了Qt文档和示例中的相关内容,可以使用户不必另行打印Qt Assistant,就可以在Qt Creator的Help模式下获得帮助。,图13.5.11 Help模式的界面,13.5.4 Qt Designer,1. Qt Designer简介 Qt Designer 是强大的跨平台 GUI 布局和格式构建器。Qt Designer

43、是Qt SDK的组成部分之一。Qt Designer的功能和优势如下: 使用拖放功能快速设计用户界面; 定制 widget, 或从标准 widget 库中选择 widget; 以本地外观快速预览格式; 通过界面原型生成 C+ 或 Java 代码; 可以将 Qt Designer 与 Visual Studio 或 Eclipse IDE 配合使用; 使用 Qt 信号与槽机制构建功能齐全的用户界面。 Qt Designer 是一个可视化的基于 Qt 的用户界面设计工具,是Qt SDK的一部分,用来生成.ui 定义文件,而不考虑具体的语言。,Qt Designer是一个所见即所得的全方位GUI构造

44、器,它所设计出来的用户界面能够在多种平台上使用。利用Qt Designer,可以拖放各种Qt控件构造图形用户界面并可预览效果。 使用Qt Designer,开发人员既可以创建“对话框”样式的应用程序、又可以创建带有菜单、工具栏、气球帮助以及其他标准功能的“主窗口”样式的应用程序。Qt Designer提供了多种窗体模板,开发人员可以创建自己的模板,确保某一应用程序或某一系列应用程序界面的一致性。编程人员可以创建自己的自定义窗体,这些窗体可以轻松与Qt Designer集成。 Qt Designer支持采用基于窗体的方式来开发应用程序。窗体是由用户界面(.ui)文件来表示的,这种文件既可以转换成

45、C+并编译成一个应用程序,也可以在运行时加以处理,从而生成动态用户界面。Qt的构建系统能将用户界面的编译构建过程自动化,使设计过程更轻松。,2. Qt Designer的组成Qt Designer主要由窗口部件盒、对象查看器、属性编辑器、资源浏览器、动作编辑器和信号/槽编辑器组成,且它们都是锚接窗口,通常排列在窗体的两侧,也可以定制它们的位置。打开的Qt Designer的界面如13.5.12所示。利用Qt Designer,可以拖放各种Qt控件构造图形用户界面并可以预览效果。,13.5.12 Qt Designer的界面,3. Qt Designer的使用 使用Qt Designer设计窗体

46、的步骤如下: (1)启动Qt Designer。 在安装Qt SDK之后,如果在“开始”“程序”“Qt SDK”下找不到Qt Designer的快捷方式,可到Qt SDK的安装路径下寻找Qt Designer应用程序,如:D:QtSDKDesktop Qt4.8.1mingwbin。 (2)新建窗体对话框。通过“File”“New”,来建立窗体对话框,如图13.5.13所示。,图13.5.13 新建窗体对话框,(3)示例设计:显示和隐藏“Hello Qt!”该示例完成的功能是:设计两个按钮和一个Label,当点击“Show”按钮时,显示“Hello Qt!”;当点击“Hide”按钮时,隐藏“H

47、ello Qt!”。 从左侧的窗口部件盒中拖出两个“Push Button”和一个“Label”,放在窗体上。如图13.5.14所示。,图13.5.14 添加窗口部件, 修改窗口部件的属性。将两个按钮的名称分别改为“Show”和“Hide”,将Label名称改为“Hello Qt!”,如图13.5.15所示。,图13.5.15 修改窗口部件属性, 单击菜单“Edit”“Edit Signals/Slots”,此时,当鼠标指向按钮或Label时,按钮或Label是红色。左键拖动“Show”到“Hello Qt!”,如图13.5.16所示。释放鼠标,会弹出信号和槽的对话框,如图13.5.17所示。

48、,图13.5.16 拖动“Show”到“Hello Qt!”,图13.5.17 信号和槽对话框, 选择连接clicked()信号和show()槽。需要注意的是,首先必须选中“Show signals and slots inherited from QWidget”,然后在左侧选择信号clicked(),在右侧选择show(),如图13.5.18所示。单击“确定”按钮,则将“Show”按钮与“Hello Qt!”连接起来。,图13.5.18 配置信号和槽, 同样的方法将“Hide”按钮的click()信号与“Hello Qt!”的hide()连接起来,连接之后如图13.5.19所示。,图13.

49、5.19 连接图, 编译运行,运行结果如图13.5.20和图13.5.21所示: 需要注意的是,Qt Designer只是用来进行GUI设计,生成一个.ui文件,具体的运行还依赖于Qt Creator。,图13.5.20 按“Show”按钮之后的现象 图13.5.21 按“Hide”按钮之后的现象,13.5.5 Qt Assistant,Qt Assistant是Qt自带的一款可定制、可重新发行的帮助文件浏览器。Qt Assistant是一个浏览Qt参考文档的工具,它具有强大的查询和索引功能,使用时比Web浏览器更加快速和容易。而且它可定制,并且可随用户自己的应用程序一起发布,从而形成用户自己

50、的帮助系统。利用Qt Assistant可以获取在线文档与帮助。 Qt的参考文档包括HTML文档,描述了Qt的所有类和工具,以及Qt编程等。所以对于任何一名Qt开发人员来说,在线文档和帮助是必不可少的,它是一个基本工具。任何一本Qt书籍都不能完全覆盖到Qt中所有的类和函数,同时也无法提供全部的细节。尽可能了解Qt参考文档,对Qt开发人员来说是有益的。 在Qt的doc/html目录下可以找到HTML格式的参考文档,并且可以使用任何一种Web浏览器来阅读它。,Qt Assistant支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器。定制过程中用到qhp,qch,qhcp,qhc四

51、种不同格式的文件。这四种文件可以分为两组: (1)qhp 与qch Qhp(Qt Help Project)文件负责组织实际用到的帮助文件(通常为HTML文件,即需要在Qt Assistant中浏览的文件),然后通过qhelpgenerator命令生成压缩的qch文件。Qch(Qt Compressed Help)文件是Qt Assistant能够识别的文档最小单元,可以通过Qt Assistant编辑首选项文档标签页添加/移除操作来注册或者注销一个qch文件。也可以通过命令 “assistant -register doc.qch”来注册qch文件。注册后,即可在Assistant界面中浏览

52、帮助文档。,(2)qhcp 和qhc Qhcp(Qt Help Collection Project)的主要作用是将qch二进制文件组织成为一个collection,定制客户化的Assistant。而qhc则是通过 qcollectiongenerator命令生成的二进制文件,启动Assistant时需要指定collection参数,即qhc文件。qhc文件中是qch文件的集合,打开Assistant时,通过指定当前collection即可注册多个帮助文档。,13.5.6 Qt Demo,1. Qt Demo简介 Qt Demo是包含了大量的演示和示例程序,基本涵盖了Qt编程中的主要类别。在W

53、indows下运行Qt Demo,可以依次单击“开始”“程序”“Qt SDK” “Qt Demo”。如果找不到,可在Qt SDK的安装路径中寻找Qt Demo的快捷方式,如“D:QtSDKDesktopQt4.8.1mingwbin”。打开的Qt Demo界面如图13.5.22所示。,从Qt Demo的界面可见,左边列出了可供参考示例的类别,右边则是这个类别的概述,在左下角还有导航按钮,可以在各个不同页面间跳转。在界面的最下方左边的是“Quit”按钮,用于退出Qt Demo。右边是“Toggle fullscreen” 按钮,用于切换全屏显示和正常显示。,图13.5.22 Qt Demo的界面

54、,2. Qt Demo的使用 下面介绍如何使用Qt Demo:第1步 首先选择某一个大类例如选择“Dialogs”,方法是单击左侧的“Dialogs”按钮,Qt Demo将跳转到该类别的页面,如图13.5.23所示:,图13.5.23 选择Qt Demo的“Dialogs”类,第2步 选择细分类别例如选择在左侧细分类别中的“Configuration Dialog”,如图13.5.24所示:,图13.5.24 选择“Configuration Dialog”,第3步 查看示例运行结果单击“Launch”按钮,Qt Demo将运行示例程序,如图13.5.25所示:,图13.5.25 示例运行结果

55、,第4步 查阅例子代码和参考文档该步骤实际上是和Qt Assistant配合起来使用的,单击“Documentation”按钮,将调用Qt Assistant并切换到相应的界面,如图13.5.26所示:,图13.5.26 查看例子代码和参考文档,第5步 使用代码或文档接下来就是使用Qt Assistant,进入某一个源代码文件中,可以浏览、复制源代码,或者稍作修改作为自己代码中的一部分。将Qt Demo与Qt Assistant结合起来使用,可以收到事半功倍的效果。,13.5.7 Qt应用程序的开发示例,在开发Qt应用程序时,一些常用的方法如下: 全部采用手写代码,在命令行下完成编译和运行。这

56、种方式是最基础、最基本的,要求开发者充分了解编译系统和Qt有关知识。其缺点是在大型的、多人参与的工程开发和项目研制中,一些问题如协同开发、版本控制管理等都将变得难以解决。 在集成开发环境(IDE )中采用手写代码(包括设计界面),使用IDE完成编译和运行。这种方式借助IDE来管理工程要素,并且可以借助调试和图形化工具来加速开发。其缺点是IDE完成的一些事情往往会不如所愿,在很多情况下还是需要使用命令行工具来辅助。 使用Qt Designer设计界面,使用IDE完成编译和运行。开发者使用Qt Designer设计界面元素,然后把工程文件的生成、管理,程序的编译运行都交给IDE来处理。其缺点是使用

57、Qt Designer生成的代码量较大,阅读代码和调试程序相对比较困难。 集成式的工具可以为开发者做太多的事情,但也隐藏了Qt的核心机制与原理,对于初学者来说,不太容易理解和掌握Qt编程的本质。,下面以一个简单的“Hello Qt!”程序为例,介绍采用两种不同方法的Qt应用程序开发流程。 1. 使用Qt Designer和IDE 示例使用Qt Designer设计界面,使用IDE完成编译和运行。 (1)启动Qt Creator。依次单击“开始”“程序”“Qt SDK”“Qt Creator”,启动Qt Creator。 (2)新建工程 文件新建文件或工程,建立一个新工程,如图13.5.27所示

58、: 如图13.5.28所示,在弹出的对话框里选择Qt控件项目,然后选择Qt GUI应用。单击“选择”,进入下一步。 确定项目的名称以及存储路径,如图13.5.29所示。项目的名称和存储路径最好不要采用特殊字符和中文字符。这里,确定项目的名称为hello_qt,存储路径设为“E:all_exerciseqt”。点击“下一步”按钮进入下一步。,图13.5.27 新建项目,图13.5.28 Qt GUI应用,图13.5.29 设置项目名称和存储路径,图13.5.30 目标设置, 如图13.5.30所示,对工程hello_qt的目标进行设置,选择默认设置即可。单击“下一步”按钮进入下一步。 指定源码文

59、件的基本类信息,如图13.5.31所示,单击“下一步”按钮进入下一步。,图13.5.31 基本类信息,图13.5.32 项目管理, 项目管理,主要向用户展示了即将创建的工程的信息,如图13.5.32所示,单击“完成”,就生成了一个新的项目hello_qt,如图13.5.33所示。此时,项目已经包含了头文件、源文件和界面文件。,图13.5.33 新工程界面,(2)创建窗口部件并设置属性 双击mainwindow.ui文件,Qt Creator将把Qt Designer打开并集成到框架内,如图13.5.34所示。,图13.5.34 集成Qt Designer的Qt Creator, 从左侧窗口部件中Display Widgets中找出并选中Label部件,将Label部件拖到设计窗口上,如图13.5.35所示。 设置Label的属性,双击TextLabel,将内容改为“Hello Qt!”。此外,还可以通过右下角的属性栏改变其他属性,如字体、大小等。经设置后的界面如图13.5.36所示。 (3)编译及运行

温馨提示

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

评论

0/150

提交评论