QTQt-C++图形用户界面库一QT介绍Qt-C++图形用户界面库1.Qt是一个跨平台的C++图形用户界面库,由Nokia公司出品。目前产品包括Qt、Qt/Embedded、快速开发工具QtDesigner、国际化工具QtLinguist等部分。Qt支持Unix,Linux,Windows,WinCE,Symbian。2.Qt是基于面向对象的C++语言,它提供了信号(signal)和槽(slot)的对象通信机制,具有可查询和可设计的属性,以及强大的事件和事件过滤器。同时,它还具有字符国际化,即支持根据上下文进行国际化字符串翻译。许多Qt特性基于QObject的继承,通过标准C++技术实现。Qt介绍Qt-C++图形用户界面库3.Qtopia是为了Linux的PDA、智能电话和其他移动设备设计的一个全面并且可以用户化的应用程序平台和用户界面。4.Qt/Embedded是面向嵌入式系统的Qt版本,是Qt的嵌入式Linux窗口,是完整的自包含C++GUI(图形用户界面)和基于Linux的嵌入式平台开发工具。Qt/EmbeddedAPI可以用于多种开发项目。许多基于Qt的XWindow程序可以非常方便地移植到嵌入式版本,适用于高端PDA等产品。Qt/Embedded内部对于字符集的处理采用了UNICODE编码标准。Qt-C++图形用户界面库一QT介绍二QT特征Qt特征Qt-C++图形用户界面库Qt作为新型的GUI开发工具,具有与一般的工具包所不同的特征,使它的应用非常广泛。2.1.面向对象2.2.组件间的相互通信2.3.友好的联机帮助2.4.用户自定义2.5.方便性2.6.国际化2.7.丰富的API函数2.8.完整的一套控件2.9.高性能的工具2.10.GUI竞争2.11.可用户化的外观2.12.优越的绘画功能2.13.绘制2D/3D图形功能Qt特征Qt-C++图形用户界面库2.1.面向对象Qt具有模块设计和控件或元素的可重用性的特点。一个控件不需要知道它的内容和用途,通过signal和slot与外界通信、交流。而且,所有Qt的控件都可通过继承。2.2.控件间的相互通信Qt提供signal和slot概念,这是一种安全可靠的方法,它允许回调,并支持对象之间在彼此不知道对方信息的情况下,进行合作,这使Qt非常合适于真正的控件编程。2.3.友好的联机帮助Qt包括大量的联机参考文档,有超文本HTML方式、UNIX帮助页、man手册和补充的指南。对于初学者,指南将一步步地解释Qt编程。Qt特征Qt-C++图形用户界面库2.4.用户自定义其他的工具包在应用时都存在一个普遍的问题,就是经常没有真正适合需求的控件,生成的自定义控件对用户来说,也是一个黑匣子。比如,在Motif手册中就讨论了用户自定义的控件的问题。而在Qt中,能够创建控件,具有绝对的优越性,生成自定义控件非常简单,并且容易修改控件。2.5.方便性由于Qt是一种跨平台的GUI工具包,所以,它对编程者隐藏了在处理不同窗口系统时的潜在问题。为了将基于Qt程序更加方便,Qt包含了一系列类,该类能够使程序员避免了在文件处理、时间处理等方面存在依赖操作系统方面的细节问题。Qt特征Qt-C++图形用户界面库2.6.国际化Qt为本地化应用提供完全的支持,所有用户界面的文本或字符串都可以利用翻译工具将其译成各国语言。2.7.丰富的API函数为了适合用户的需求,Qt的API提供了C++类,用于专门的GUI。Qt还提供了基于模板的初始化、文件和通用的I/O设备、目录管理、日期/时间类、常用表达式解析等。目的是利用这些类,建立或生成不同的功能,用它们来实现Qt的通用化。除此之外,也可以利用STL标准模块库或其他工具包。Qt特征Qt-C++图形用户界面库2.8.完整的一套控件Qt编程的基本模块(构件)称为控件,一个控件是一个用户界面的组成部分,比如按钮、滚动条。Qt包含用来创建专业外观的用户界面所需要的所有控件。2.9.高性能的工具对于库来讲,它的有效性远超过应用性。为了提高Qt库的有效性、快捷性,对其进行了优化,Qt能执行一些基本的任务,比如图形的润色,比一般的基于平台的代码要快。Qt是基于Xlib,而不依赖Motif工具包。Qt特征Qt-C++图形用户界面库2.10.GUI竞争大多数GUI工具包是基于分层的方法。比如,工具包为本地窗口系统组件提供了很多C++类,这种结构使组件的继承性和通用性变得很差。在层次化的工具包中,GUI功能常成为所有使用的窗口系统所必须的最普遍的基础。Qt仿效本地窗口系统的组件,这是一种非常复杂的技术。Qt还提供一些更有用的函数,类似文本的旋转,适用于多种平台。2.11.可用户化的外观Qt支持主题,所以基于Qt的应用软件能在Mac外观、Windows等外观主题之间互换,甚至改变运行时间。这些应用程序不管是在XWindow下,还是在MicrosoftWindows下都可以独立操作、运行。Qt特征Qt-C++图形用户界面库2.12.优越的绘画功能Qt的绘画工具QPainter类,在任意一个绘图设备上都可以润色图形。绘图设备包括组件、像素映射、图形文件和打印机,相同的代码可以用在4种不同类型的设备上。QPainter类支持复杂的同等系统的转换,很容易在所有平台上画旋转文本和像素映射。2.13.绘制2D/3D图形功能Qt提供了QGLWidget类,使用该类能够绘制2D/3D图形。用QGLWidget就像用一个Qt组件一样方便。这比纯粹的用OpenGL做的3D图形更好使用。Qt-C++图形用户界面库一QT介绍二QT特征三QT组成部分库描述QtCore核心非GUI功能QtGui核心GUI功能QtNetwork网络模块QtOpenGLOpenGL模块QtSqlSQL模块QtSvgSVG透视图类QtXmlXML模块Qt3Support支持Qt3的类QAxContainerActiveQt客户端的扩充QAxServerActiveQt服务器段的扩充QtAssistantQt助手的语言类QtDesignerQt设计器的扩展类QtUiTools生成动态GUI类QtTest单元测试工具类Qt系统构造Qt-C++图形用户界面库Qt系统构造Qt-C++图形用户界面库QtCore不但包含QString、QList和QFile等工具类,而且包含QObject和QTimer等内核类。因为QApplication类有refactored,所以它能使用在非GUI应用程序中。它将拆分为:QCoreApplication(在QtCore中)和QApplication(在QtGui中)。这种拆分将使用Qt开发服务器应用程序,无需连接所有多余的与GUI相关的代码,无需要求与GUI相关的系统程序将要放到当前的目标机器中成为可能。(例如:Xlib在X11上,Carbon在MacOSX上)。Qt系统构造Qt-C++图形用户界面库如果你想利用qmake命令生成Makefile文件,qmake将默认链接到你的应用程序依赖的QtCore和QtGui中。如果你想删除具有依赖关系的GUI,请在您的.profile文件中加入以下内容:QT-=gui如果想使用其他的库文件,请加入以下内容:QT+=networkopengl如果你要编译.ui文件,你也需要在.pro文件中加入以下内容:CONFIG+=uic31.averypowerfulmechanismforseamlessobjectcommunicationcalledsignalsandslots2.powerfuleventsandeventfilters3.contextualstringtranslationforinternationalization4.sophisticatedintervaldriventimersthatmakeitpossibletoelegantlyintegratemanytasksinanevent-drivenGUI5.hierarchicalandqueryableobjecttreesthatorganizeobjectownershipinanaturalway6.guardedpointers(QPointer)thatareautomaticallysetto0whenthereferencedobjectisdestroyed,unlikenormalC++pointerswhichbecomedanglingpointerswhentheirobjectsaredestroyedadynamiccastthatworksacrosslibraryboundaries.Qt-对C++的扩展Qt-C++图形用户界面库一QT介绍二QT特征三QT系统构造四QT的类主要的类描述抽象窗口部件类抽象窗口部件类是通过子类来使用的。高级窗口部件类高级的GUI窗口部件,比如列表视图和进度条基本窗口部件类基本的GUI窗口部件,比如按钮、组合框和滚动条数据库类与数据库相关的类,比如与SQL数据库相关的类。日期与时间类处理日期与时间的类拖放类处理拖放和MIME类型的编码和解码类环境类提供了多样全面的服务,比如事件处理、系统设置访问和国际化等服务的类事件类用来生成和处理事件的类非GUI类非GUI类是一个集合类。比如:列表、队列、堆栈和字符串,它们不需要QApplication类就可以和其他类一起使用。多媒体、图形和打印类该类主要提供支持图形(2D、3D和OpenGL),图像的编码、解码和处理,声音,动画,打印等等。帮助系统类用来给应用程序提供在线帮助的类。布局管理类用来处理自动调整窗口部件的大小和位置,能够构成复杂对话框的类。共享类为了快速复制而使用引用计数的类。Qt系统的类Qt-C++图形用户界面库Qt系统的类Qt-C++图形用户界面库主要的类描述输入/输出和网络类提供文件输入输出,目录和网络操作。主窗口和相关类一切你所需要的典型现代主程序窗口,包括目录、工具条、工作区等等。杂类各种各样其他有用的类模块/视图类该类主要用于设计模块/视图平台的类。对象模型Qt图形用户界面的工具包底层对象模型。组织者用户接口组织者,比如:分隔器、TAB条、按钮组等等。插件类插件相关类。标准对话框用于文件、字体、颜色选择和更多的已经做好的对话框。模板类Qt的模板库容器类。文本相关类文本处理的类。(也可以参考XML类。)线程类提供线程支持的类。窗口外观和风格可以自定义风格、字体、颜色等等外观的类。XML类支持XML的类,例如:DOM和SAX。QtopiaCore类是QtopiaCore一个特殊的类(Qt的嵌入Linux)。Qt-C++图形用户界面库一QT介绍二QT特征三QT组成部分四QT的类五QT的控件Qt的组件Qt-C++图形用户界面库5.1按钮5.1.1推动按钮5.1.1.1推动按钮的描述推动或者命令按钮是任何GUI(图形用户界面)中最常用的窗口部件,它来命令计算机执行一些操作,或者回答一个问题。典型的按钮有确定(OK)、应用(Apply)、撤消(Cancel)、关闭(Close)、是(Yes)、否(No)和帮助(Help)等。该按钮是矩形的,并且通常显示一个文本标签来描述它的操作。标签中有下划线的字母(在此它的前面用“&”标明)表明快捷键,比如:QPushButton*pushbutton=newQPushButton(&Help);这个实例中快捷键是Alt+H,并且文本标签将被显示为Help。Qt的组件Qt-C++图形用户界面库5.1.1.2推动按钮的成员QPushButton(QWidget*parent=0)构造一个没有文本的推动按钮,参数为parent。QPushButton(constQString&text,QWidget*parent=0)构造一个父对象为parent、文本为text的推动按钮。QPushButton(constQIcon&icon,constQString&text,QWidget*parent=0)构造一个图标为icon、文本为t