《《QT开发手册》word版.doc》由会员分享,可在线阅读,更多相关《《QT开发手册》word版.doc(116页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录第一章 LINUX 图形用户界面 GUI 介绍 .11.1 常用 GUI 介绍.11.2 关于 Qt.21.3 Qt/Embedded 简介.41.4 Qtopia 介绍.4第二章 QT 的安装.62.1 Qt X11 的安装 .62.2 Qt/Embedded 安装.92.3 Qtopia 编译. 11第三章 QT 的编程.12实验一实验二实验三实验四实验五实验六实验七实验八实验九实验十“Hello word!”Qt 初探 .12创建一个窗口并添加按钮 .17对象间通信:Signal 和 Slot 机制 .20菜单和快捷键.29工具条和状态栏.38鼠标和键盘事件.48对话框.63Qt
2、中的绘图.75Qt 中的多线程编程.85Qt 中的网络编程.97第四章 QT 常用工具的介绍 . 1114.1 Qt 设计器(Qt Designer) . 1114.2 Tmake. 1134.3 Qvfb . 114嵌入式系统教学平台实验教材第一章 Linux 图形用户界面 GUI 介绍所谓 GUI(Graphics User Interface),就是图形用户界面。图形用户界面的广泛流行是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而可以通过窗口、菜单方便地操作。它的主要特征有三点:WIMP。其中,W(Windows)指窗口,是用户或系统的
3、一个工作区域。一个屏幕上可以有多个窗口。I(Icons)指图图标,是形象化的图形标志,易于人们隐喻和理解。M(Menu)指菜单,可供用户选择的功能提示。P(Pointing Devices)指鼠标等,便于用户直接对屏幕对象进行操作。用户模型。GUI 采用了不少 Desktop 桌面办公的隐喻,让使用者共享一个直观的界面框架。由于人们熟悉办公桌的情况,因而对计算机显示的图标的含义容易理解,诸如:文件夹、收件箱、画笔、工作簿、钥匙及时钟等。直接操作。过去的界面不仅需要记忆大量命令,而且需要指定操作对象的位置,如行号、空格数、X 及 Y 的坐标等。采用 GUI 后,用户可直接对屏幕上的对象进行操作,
4、如拖动、删除、插入以及放大和旋转等。用户执行操作后,屏幕能立即给出反馈信息或结果,称为所见即所得(What You See Is What You Get,WYSIWYG)。用视、点(鼠标)代替了记、击(键盘),给用户带来了方便。通常所见的 GUI 都是位于 PC 机上的,但是在 PC 上 GUI 并不适合嵌入式系统。嵌入式设备有严格的资源要求(比如十分有限的存储空间)。同时嵌入式系统经常有一些特殊的要求,而普通的 PC 上的图形窗口系统是不能满足这些要求的。比如特殊的外观效果,控制提供给用户的函数,提高装载速度,特殊的低层图形或输入设备。因此可见嵌入式系统必定要有自己的 GUI。综上所述,嵌
5、入式 GUI 就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统。所以嵌入式 GUI 不但要具有以上有关 GUI 的特征,而且在实际应用中,嵌入式系统对它来说还有如下的基本要求:轻型,占用源少;高性能;高可靠性;可配置。下面我们就目前市场上常用的嵌入式 GUI 做一个简单的介绍。1.1 常用 GUI 介绍1MiniGUI由北京飞漫软件技术有限公司开发的 MiniGUI(http:/www.minigui.org),是国内为数不多的几大国际知名自由软件之一。MiniGUI 是面向实时嵌入式系统的轻量级图形用户界面支持系统,1999 年初遵循 GPL 条款发布第一个版本以来,已广泛应
6、用于手持信息终端、机顶盒、工业控制系统及工业仪表、彩票机、金融终端等产品和领域。目前,MiniGUI 已成为跨操作系统的图形用户界面支持系统,可在 Linux/uClinux、eCos、uC/OS-II、VxWorks、等 操 作 系 统 上 运 行 ; 已 验 证 的 硬 件 平 台 包 括 Intel x86 、 ARM ( ARM7/AMR9/StrongARM/xScale)、PowerPC、MIPS、M68K(DragonBall/ColdFire)等等。MiniGUI 良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。在设计之- 1 -嵌入式系统教学平台实验教材初,就充分考
7、虑到了实时嵌入式系统的特点,针对多窗口环境下的图形绘制开展了大量的研究及开发,优化了 MiniGUI 的图形绘制性能及资源占有。MiniGUI 在大量实际系统中的应用,尤其在工业控制系统的应用,证明 MiniGUI 具有非常好的性能。2MicroWindowsMicroWindows()是一个开放源码的项目,目前由美国 Century Software 公司主持开发。该项目的开发一度非常活跃,国内也有人参与了其中的开发,并编写了 GB2312 等字符集的支持。但在 Qt/Embedded 发布以来,该项目变得不太活跃,并长时间停留在 0.89Pre7 版本。可以说,以开放源码形势发展的 Mic
8、roWindows项目,基本停滞。MicroWindows 是一个基于典型客户/服务器体系结构的 GUI 系统,基本分为三层。最底层是面向图形输出和键盘、鼠标或触摸屏的驱动程序;中间层提供底层硬件的抽象接口,并进行窗口管理;最高层分别提供兼容于 X Window 和 Windows CE(Win32 子集)的 API。该项目的主要特色在于提供了类似 X 的客户/服务器体系结构,并提供了相对完善的图形功能,包括一些高级的功能,比如 Alpha 混合,三维支持,TrueType 字体支持等。MicroWindows 采用 MPL(mozilla public license)条款发布。3DinXD
9、inX 非常适合于在很小的系统上运行多窗口程序,它简单、轻巧,并且快速。DinX并不是 X,它使用 Linux 核心的 framebuffer 视频驱动,采用 Client/Server 模式。为此,系统提供了两个界面:/dev/dinxsvr 和/dev/dinxwin。一个服务器程序连接到/dev/dinxsvr,并决定来自各程序窗口的 request 各占有视屏的各个 部 分 。 它 也 负 责 给 各 窗 口 发 送 像 鼠 标 移 动 这 样 的 事 件 消 息 。 Clinet 程 序 连 接 到/dev/dinxwin,与 Server 进行消息通信等。Server 进程还负责处
10、理事件、窗口管理、调色板配置等功能。DinX 是一个实验性的窗口系统,它处在发展阶段中,还存在一些缺陷和问题。DinX 的 license 属于 MPL,也可以转化为 GPL。这样,DinX 核心模块可以集成到 Linux中,DinX 库可以链接到其他的 GPL 程序中。4OpenGUIOpenGUI()在 Linux 系统上存在已经很长时间了。最初的名字叫 FastGL,只支持 256 色的线性显存模式,但目前也支持其他显示模式,并且支持多种操作系统平台,比如 MS-DOS、QNX 和 Linux 等等,不过目前只支持 x86 硬件平台。OpenGUI 也分为三层。最低层是由汇编编写的快速图
11、形引擎;中间层提供了图形绘制 API,包括线条、矩形、圆弧等,并且兼容于 Borland 的 BGI API。第三层用 C+编写,提供了完整的 GUI 对象集。OpenGUI 采用 LGPL 条款发布。OpenGUI 比较适合于基于 x86 平台的实时系统,可移植性稍差,目前的发展也基本停滞。5Qt/EmbeddedQt/Embedded 是著名的 Qt 库开放商正在进行的面向嵌入式系统的 Qt 版本。这个版本的主要特点是可移植性较好,许多基于 Qt 的 X Window 程序可以非常方便地移植到嵌入式版本。在下面我们将会详细介绍。1.2 关于 QtQt是一个跨平台的 C+ 图形用户界面库,由
12、挪威TrollTech公司出品,它的目的是提供开发应用程序用户界面部分所需要的一切,主要通过汇集C类的形式来实现这一目的。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的- 2 -嵌入式系统教学平台实验教材很容易扩展,并且允许真正地组件编程。Qt是Trolltech公司的一个标志性产品。Trolltech 公司1994年成立于挪威,但是公司的核心开发团队已经在1992 年开始了Qt产品的研发,并于1995年推出了Qt的第一个商业版,直到现在Qt已经被世界各地的跨平台软件开发人员使用,而Qt的功能也得到了不断的完善和提高。Qt 是一个支持多操作系统平台的应用程序
13、开发框架,它的开发语言是C+。Qt 最初主要是为跨平台的软件开发者提供统一的,精美的图形用户编程接口,但是现在它也提供了统一的网络和数据库操作的编程接口。正如微软当年为操作系统提供了友好,精致的用户界面一样,今天由于Trolltech 的跨平台开发框架Qt 的出现,也使得UNIX、LINUX 这些操作系统以更加方便、精美的人机界面走近普通用户。Qt 是以工具开发包的形式提供给开发者的,这些工具开发包包括了图形设计器,字体国际化工具,Makefile 制作工具, Qt 的C+类库等等;谈到C+的类库我们自然会想到MFC,是的,Qt 的类库也是等价于MFC 的开发库,但是Qt 的类库是支持跨平台的
14、类库,也就是说Qt 类库封装了适应不同操作系统的访问细节,这正是Qt 的魅力所在。目前 Qt 系列的软件主要包括 Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具Qt Designer,国际化工具 Qt Linguist 等部分 。Trolltech 公司在 1994 年成立,但是在 1992 年,成立 Trolltech 公司的那批程序员就已经开始设计 Qt 了,Qt 的第一个商业版本于 1995 年推出然后 Qt 的发展就很快了,下面是 Qt 发展史上的一 些里程碑:1996 Oct KDE 组织成立1998 Apr 05 Trolltech 的程序员在 5
15、天之内将 Netscape5.0 从 Motif 移植到 Qt 上1998 Apr 08 KDE Free Qt 基金会成立1998 Jul 09 Qt 1.40 发布1998 Jul 12 KDE 1.0 发布1999 Mar 04 QPL 1.0 发布1999 Mar 12 Qt 1.44 发布1999 Jun 25 Qt 2.0 发布 发布2000 Mar 20 嵌入式 Qt 发布2000 Sep 06 Qt 2.2 发布 发布2000 Oct 30 Qt/Embedded 开始使用 GPL 宣言2000 Sep 04 Qt free edition 开始使用 GPL基本上,Qt 同 X
16、 Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但是 Qt 具有下列优点:优良的跨平台特性: Qt 支持下列操作系统: Microsoft Windows 95/98, MicrosoftWindows NT,Linux,Solaris,SunOS,HP-UX,Digital UNIX (OSF/1,Tru64),Irix, FreeBSD,BSD/OS,SCO,AIX,OS390,QNX 等等;面向对象:Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常
17、方便的。Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单;丰 富 的 API : Qt 包 括 多 达 250 个 以 上 的 C+ 类 , 还 提 供 基 于 模 板 的collections,serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理功能;- 3 -嵌入式系统教学平台实验教材支持 2D/3D 图形渲染,支持 OpenGL;大量的开发文档;XML 支持;1.3 Qt/Embedded 简介Qt/Embed
18、ded 是一个为嵌入式设备上的图形用户接口和应用开发而订做的C工具开发包. 它通常可以运行在多种不同的处理器上部署的嵌入式Linux操作系统上。如果不考虑X窗口系统的需要,居于Qt/Embedded 的应用程序可以直接对缓冲帧进行写操作。除了类库以外,Qt/Embedded还包括了几个提高开发速度的工具,使用标准的Qt API,我们可以非常熟练的在Windows和Unix编程环境里开发应用程序。Qt/Embedded 是 一 组 用 于 访 问 嵌 入 式 设 备 的 Qt C+ API ; Qt/Embedded 的Qt/X11,Qt/Windows 和Qt/Mac版本提供的都是相同的API
19、和工具。Qt/Embedded还包括类库以及支持嵌入式开发的工具。Qt/Embedded提供了一种类型安全的被称之为信号与插槽的真正的组件化编程机制,这种机制和以前的回调函数有所不同。Qt/Embedded还提供了一个通用的widgets类,这个类可以很容易的被子类化为客户自己的组件或是对话框。针对一些通用的任务,Qt还预先为客户定制了像消息框和向导这样的对话框。运行Qt/Embedded 所需的系统资源可以很小,相对X窗口下的嵌入解决方案而言,Qt/Embedded只要求一个较小的存储空间(Flash)和内存。Qt/Embedded可以运行在不同的处理器上部署的Linux系统,只要这个系统有
20、一个线性地址的缓冲帧并支持C的编译器。你可以选择不编译Qt/Embedded某些你不需要的功能,从而大大减小了它的内存占有量。Qt/Embedded包括了它自身的窗口系统,并支持多种不同的输入设备。开发者可以使用他们熟悉的开发环境来编写代码。Qt的图形设计器(designer)可以用来可视化地设计用户接口,设计器中有一个布局系统,它可以使你设计的窗口和组件自动根据屏幕空间的大小而改变布局。开发者可以选择一个预定义的视觉风格,或是建立自已独特的视觉风格。使用UNIX/LINUX操作系统的用户,可以在工作站上通过一个虚拟缓冲帧的应用程序仿真嵌入式系统的显示终端。Qt/Embedded也提供了许多特
21、定用途的非图形组件,例如国际化,网络和数据库交互组件。Qt/Embedded是成熟可靠的工具开发包,它在世界各地被广泛使用。除了在商业上的许多应用以外,Qt/Embedded还是为小型设备提供的Qtopia应用环境的基础。Qt/Embedded以简洁的系统,可视化的表单设计和详致的API让编写代码变得愉快和舒畅。1.4 Qtopia 介绍Qtopia 是Trolltech 为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台, Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。Qtopia的特性如下表所示:- 4 -嵌入式系统教学平台实验教材
22、Trolltech 提供三大Qtopia 版本:Qtopia 手机版、Qtopia PDA 版和Qtopia 消费电子产品平台:Qtopia 手机版:Trolltech 面向嵌入式Linux 的Qtopia 手机版(Qtopia Phone) 是Qtopia的一个自定义版本用于内存有限的智能手机和功能手机它的用户界面可自定义内存占用量低手机制造商使用它可以创建令人赞叹的图形用户界面从而令手机卓越超群Qtopia 手机版有两个版本键盘驱动和手写笔驱动。Qtopia PDA 版:Qtopia PDA 版Qtopia PDA 是一个强大的平台专用于基于Linux操作系统的PDA 个人数字助理设备许多
23、PDA 都已采用了Qtopia,Qtopia PDA 版已经成了事实上的Linux 标准它代表了可行的第三种PDA 设计方案Qtopia PDA 版具有可定制的用户界面支持多种不同的屏幕尺寸以及横向和纵向布局。Qtopia 消费电子产品平台:While Qtopia 手机版和Qtopia PDA 版是针对移动电话和PDA 制造商的统包解决方案而Qtopia 消费电子产品平台(Qtopia CEP) 则是一套高层次开发平台适用于那些希望自行设计和开发应用套件的制造商Qtopia CEP使得制造商能够在形形色色的手写笔和键盘驱动的设备上创建自定义的环境这些设备包括电视机Web Pad 无线联网板机
24、顶盒以及许多其它基于Linux 的设备等等。Qtopia 产品系列旨在为基于Linux 的消费电子设备提供和创建图形用户界面它为制造商提供了前所未有的灵活性和众多选择。- 5 -窗口操作系统游戏和多媒体工作辅助应用程序同步框架PIM应用程序Internet应用程序开发环境输入法Java集成本地化支持个性化选项无线支持嵌入式系统教学平台实验教材第二章 Qt 的安装2.1 Qt X11 的安装你可能需要 root 帐号,这取决于你要安装 Qt 的路径的权限。从 TrollTech 公司的官方ftp 站点获得 软件包。解开和解压缩软件包:# tar -vxzf qt-x11-2.3重命名软件包:进入
25、解开后的文件,设置一些环境变量在配置之前,我们先看一下配置的选项:#./configure help主要的配置信息如下:The defaults (*) are usually acceptable. Here is a short explanation ofeach option:*-release . Compile and link Qt with debugging turned off.-debug . Compile and link Qt with debugging turned on.-shared . Create and use a shared Qt library
26、(libqt.so)-static . Create and use a static Qt library (libqt.a)-no-gif . Do not compile in GIF reading support.-gif . Compile in GIF reading support. See src/kernel/qgif.h-no-sm . Do not support X Session Management.-sm . Support X Session Management, links in -lSM -lICE.-no-thread . Do not compile
27、 with Threading Support-thread . Compile with Threading Support-qt-zlib . Use the zlib bundled with Qt.-system-zlib . Use a zlib from the operating system-qt-libpng . Use the libpng bundled with Qt.-system-libpng . Use a libpng from the operating system.- 6 -嵌入式系统教学平台实验教材*-no-mng . Do not compile in
28、 MNG I/O support.-system-libmng . Use libmng from the operating system.-no-jpeg . Do not compile in JPEG I/O support.-system-jpeg . Use jpeglib from the operating system.-no-nas-sound . Do not compile in NAS sound support.-system-nas-sound . Use NAS libaudio from the operating system.see -no- . Disa
29、bles a module, where module cancan be one of: opengl table network canvas-kde . Builds the Qt Designer with KDE 2 support, so thatKDE 2 widgets can be used directly inthe Qt Designer. $KDEDIR must beset to point to a KDE 2 installation.-no-g+-exceptions . Disable exceptions on platforms using the GN
30、U C+compiler by using the -fno-exceptions flag.-no-xft . Disable support for Anti-Aliased fonts through theXft extension library (XFree86 4.0.2 and newer).-xft . Enable support for Anti-Aliased fonts.Xft support is auto-detected, but you may use theseflags to explicitly enable/disable support.-platf
31、orm target . The platform you are building on (linux-g+)-xplatform target . The platform when cross-compiling.See the PLATFORMS file for a list of supportedoperating systems and compilers.-Istring . Add an explicit include path.-Lstring . Add an explicit library path.-Rstring . Add an explicit dynam
32、ic library runtime search path.-lstring . Add an explicit library.Qt/Embedded only:- 7 -嵌入式系统教学平台实验教材-qconfig local . Use src/tools/qconfig-local.h rather than thedefault (qconfig.h).-depths list . Comma-separated list of supported bit-per-pixeldepths, from: v, 4, 8, 16, 24, and 32. v is VGA16.-acce
33、l-voodoo3 . Enable Voodoo3 acceleration.-accel-mach64 . Enable Mach64 acceleration.-accel-matrox . Enable Matrox MGA acceleration.-qvfb . Enable X11-based Qt Virtual Frame Buffer.-vnc . Enable VNC server (requires network module).选择我们需要的配置和平台:#./configure -platform linux-g+ -thread -system-jpeg -gif
34、 -no-xft按照下面的选择进行一步一步,并且会有以下打印信息:Type Q to view the Q Public License.Type G to view the GNU General Public License.Type yes to accept this license offer.Type no to decline this license offer.Do you accept the terms of the license?yesThis target is using the GNU C+ compiler (linux-g+).Recent versions
35、 of this compiler automatically includecode for exceptions, which increase both the size ofthe Qt library and the amount of memory taken by yourapplications.You may elect to re-run ./configure with the-no-g+-exceptionsoption to compile Qt without exceptions. This iscompletely binary compatible, and existingapplications will continue to work (like KDE 2).Build type:linux-g+-sharedThread support. yesGIF support. yesMNG support. noJPEG support. yesOpenGL support . yesNAS sound