《QT语言介绍.ppt》由会员分享,可在线阅读,更多相关《QT语言介绍.ppt(131页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、QT Qt-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介绍Q
2、t-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作为
3、新型的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具有模块设计和控件或元素的可重用性的特点。一个控件不
4、需要知道它的内容和用途,通过signal和slot与外界通信、交流。而且,所有Qt的控件都可通过继承。2.2.控件间的相互通信控件间的相互通信Qt提供signal和slot概念,这是一种安全可靠的方法,它允许回调,并支持对象之间在彼此不知道对方信息的情况下,进行合作,这使Qt非常合适于真正的控件编程。2.3.友好的联机帮助友好的联机帮助Qt包括大量的联机参考文档,有超文本HTML方式、UNIX帮助页、man手册和补充的指南。对于初学者,指南将一步步地解释Qt编程。Qt特征Qt-C+图形用户界面库2.4.用户自定义用户自定义其他的工具包在应用时都存在一个普遍的问题,就是经常没有真正适合需求的控件
5、,生成的自定义控件对用户来说,也是一个黑匣子。比如,在Motif手册中就讨论了用户自定义的控件的问题。而在Qt中,能够创建控件,具有绝对的优越性,生成自定义控件非常简单,并且容易修改控件。2.5.方便性方便性由于Qt是一种跨平台的GUI工具包,所以,它对编程者隐藏了在处理不同窗口系统时的潜在问题。为了将基于Qt程序更加方便,Qt包含了一系列类,该类能够使程序员避免了在文件处理、时间处理等方面存在依赖操作系统方面的细节问题。Qt特征Qt-C+图形用户界面库2.6.国际化国际化Qt为本地化应用提供完全的支持,所有用户界面的文本或字符串都可以利用翻译工具将其译成各国语言。2.7.丰富的丰富的API函
6、数函数为了适合用户的需求,Qt的API提供了C+类,用于专门的GUI。Qt还提供了基于模板的初始化、文件和通用的I/O设备、目录管理、日期/时间类、常用表达式解析等。目的是利用这些类,建立或生成不同的功能,用它们来实现Qt的通用化。除此之外,也可以利用STL标准模块库或其他工具包。Qt特征Qt-C+图形用户界面库2.8.完整的一套控件完整的一套控件Qt编程的基本模块(构件)称为控件,一个控件是一个用户界面的组成部分,比如按钮、滚动条。Qt包含用来创建专业外观的用户界面所需要的所有控件。2.9.高性能的工具高性能的工具对于库来讲,它的有效性远超过应用性。为了提高Qt库的有效性、快捷性,对其进行了
7、优化,Qt能执行一些基本的任务,比如图形的润色,比一般的基于平台的代码要快。Qt是基于Xlib,而不依赖Motif工具包。Qt特征Qt-C+图形用户界面库2.10.GUI竞争竞争大多数GUI工具包是基于分层的方法。比如,工具包为本地窗口系统组件提供了很多C+类,这种结构使组件的继承性和通用性变得很差。在层次化的工具包中,GUI功能常成为所有使用的窗口系统所必须的最普遍的基础。Qt仿效本地窗口系统的组件,这是一种非常复杂的技术。Qt还提供一些更有用的函数,类似文本的旋转,适用于多种平台。2.11.可用户化的外观可用户化的外观Qt支持主题,所以基于Qt的应用软件能在Mac外观、Windows等外观
8、主题之间互换,甚至改变运行时间。这些应用程序不管是在XWindow下,还是在MicrosoftWindows下都可以独立操作、运行。Qt特征Qt-C+图形用户界面库2.12.优越的绘画功能优越的绘画功能Qt的绘画工具QPainter类,在任意一个绘图设备上都可以润色图形。绘图设备包括组件、像素映射、图形文件和打印机,相同的代码可以用在4种不同类型的设备上。QPainter类支持复杂的同等系统的转换,很容易在所有平台上画旋转文本和像素映射。2.13.绘制绘制2D/3D图形功能图形功能Qt提供了QGLWidget类,使用该类能够绘制2D/3D图形。用QGLWidget就像用一个Qt组件一样方便。这
9、比纯粹的用OpenGL做的3D图形更好使用。Qt-C+图形用户界面库一 QT介绍二 QT特征 三 QT组成部分库库描述描述QtCoreQtCoreQtCoreQtCore核心非核心非核心非核心非GUIGUI功能功能功能功能QtGuiQtGuiQtGuiQtGui核心核心核心核心GUIGUI功能功能功能功能QtNetworkQtNetworkQtNetworkQtNetwork网网网网络络络络模模模模块块块块QtOpenGLQtOpenGLQtOpenGLQtOpenGLOpenGL OpenGL 模模模模块块块块QtSqlQtSqlQtSqlQtSqlSQL SQL 模模模模块块块块QtSvg
10、QtSvgQtSvgQtSvgSVG SVG 透透透透视图类视图类视图类视图类QtXmlQtXmlQtXmlQtXmlXML XML 模模模模块块块块Qt3SupportQt3SupportQt3SupportQt3Support支持支持支持支持Qt3Qt3的的的的类类类类QAxContainerQAxContainerQAxContainerQAxContainerActiveQt ActiveQt ActiveQt ActiveQt 客客客客户户户户端的端的端的端的扩扩扩扩充充充充QAxServerQAxServerQAxServerQAxServerActiveQtActiveQtAct
11、iveQtActiveQt 服服服服务务务务器段的器段的器段的器段的扩扩扩扩充充充充QtAssistantQtAssistantQtAssistantQtAssistantQtQt助手的助手的助手的助手的语语语语言言言言类类类类QtDesignerQtDesignerQtDesignerQtDesignerQtQt设计设计设计设计器的器的器的器的扩扩扩扩展展展展类类类类QtUiToolsQtUiToolsQtUiToolsQtUiTools生成生成生成生成动态动态动态动态GUIGUI类类类类QtTestQtTestQtTestQtTest单单单单元元元元测试测试测试测试工具工具工具工具类类类类
12、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
13、-C+图形用户界面库如果你想利用qmake命令生成Makefile文件,qmake将默认链接到你的应用程序依赖的QtCore和QtGui中。如果你想删除具有依赖关系的GUI,请在您的.profile文件中加入以下内容:QT-=gui如果想使用其他的库文件,请加入以下内容:QT+=networkopengl如果你要编译.ui文件,你也需要在.pro文件中加入以下内容:CONFIG+=uic31.averypowerfulmechanismforseamlessobjectcommunicationcalledsignalsandslots2.powerfuleventsandeventfilte
14、rs3.contextualstringtranslationforinternationalization4.sophisticatedintervaldriventimersthatmakeitpossibletoelegantlyintegratemanytasksinanevent-drivenGUI5.hierarchicalandqueryableobjecttreesthatorganizeobjectownershipinanaturalway6.guardedpointers(QPointer)thatareautomaticallysetto0whenthereferenc
15、edobjectisdestroyed,unlikenormalC+pointerswhichbecomedanglingpointerswhentheirobjectsaredestroyedadynamiccastthatworksacrosslibraryboundaries.Qt-对C+的扩展Qt-C+图形用户界面库一 QT介绍二 QT特征 三 QT系统构造四 QT的类主要的类主要的类描述描述抽象窗口部件类抽象窗口部件类抽象窗口部件类抽象窗口部件类抽象窗口部件类是通过子类来使用的。抽象窗口部件类是通过子类来使用的。抽象窗口部件类是通过子类来使用的。抽象窗口部件类是通过子类来使用的。高级
16、窗口部件类高级窗口部件类高级窗口部件类高级窗口部件类高级的高级的高级的高级的GUIGUIGUIGUI窗口部件,比如列表视图和进度条窗口部件,比如列表视图和进度条窗口部件,比如列表视图和进度条窗口部件,比如列表视图和进度条基本窗口部件类基本窗口部件类基本窗口部件类基本窗口部件类基本的基本的基本的基本的GUIGUIGUIGUI窗口部件,比如按钮、组合框和滚动条窗口部件,比如按钮、组合框和滚动条窗口部件,比如按钮、组合框和滚动条窗口部件,比如按钮、组合框和滚动条数据库类数据库类数据库类数据库类与数据库相关的类,比如与与数据库相关的类,比如与与数据库相关的类,比如与与数据库相关的类,比如与SQLSQL
17、SQLSQL数据库相关的类。数据库相关的类。数据库相关的类。数据库相关的类。日期与时间类日期与时间类日期与时间类日期与时间类处理日期与时间的类处理日期与时间的类处理日期与时间的类处理日期与时间的类拖放类拖放类拖放类拖放类处理拖放和处理拖放和处理拖放和处理拖放和MIMEMIMEMIMEMIME类型的编码和解码类类型的编码和解码类类型的编码和解码类类型的编码和解码类环境类环境类环境类环境类提提提提供供供供了了了了多多多多样样样样全全全全面面面面的的的的服服服服务务务务,比比比比如如如如事事事事件件件件处处处处理理理理、系系系系统统统统设设设设置置置置访访访访问问问问和和和和国国国国际际际际化化化化
18、等等等等 服服服服务务务务的的的的类类类类事件类事件类事件类事件类用来生成和处理事件的类用来生成和处理事件的类用来生成和处理事件的类用来生成和处理事件的类非非非非GUIGUIGUIGUI类类类类非非非非GUIGUIGUIGUI类类类类是是是是一一一一个个个个集集集集合合合合类类类类。比比比比如如如如:列列列列表表表表、队队队队列列列列、堆堆堆堆栈栈栈栈和和和和字字字字符符符符串串串串,它它它它们们们们 不不不不需需需需要要要要QApplicationQApplicationQApplicationQApplication类就可以和其他类一起使用。类就可以和其他类一起使用。类就可以和其他类一起使
19、用。类就可以和其他类一起使用。多媒体、图形和打印类多媒体、图形和打印类多媒体、图形和打印类多媒体、图形和打印类该该该该类类类类主主主主要要要要提提提提供供供供支支支支持持持持图图图图形形形形(2D2D2D2D、3D3D3D3D和和和和OpenGLOpenGLOpenGLOpenGL),图图图图像像像像的的的的编编编编码码码码、解解解解码码码码和和和和处处处处理理理理,声声声声音音音音,动动动动画,打印等等。画,打印等等。画,打印等等。画,打印等等。帮助系统类帮助系统类帮助系统类帮助系统类用来给应用程序提供在线帮助的类。用来给应用程序提供在线帮助的类。用来给应用程序提供在线帮助的类。用来给应用程
20、序提供在线帮助的类。布局管理类布局管理类布局管理类布局管理类用来处理自动调整窗口部件的大小和位置,能够构成复杂对话框的类。用来处理自动调整窗口部件的大小和位置,能够构成复杂对话框的类。用来处理自动调整窗口部件的大小和位置,能够构成复杂对话框的类。用来处理自动调整窗口部件的大小和位置,能够构成复杂对话框的类。共享类共享类共享类共享类为了快速复制而使用引用计数的类。为了快速复制而使用引用计数的类。为了快速复制而使用引用计数的类。为了快速复制而使用引用计数的类。Qt系统的类Qt-C+图形用户界面库Qt系统的类Qt-C+图形用户界面库主要的类主要的类描述描述输入输入输入输入/输出和网络类输出和网络类输
21、出和网络类输出和网络类提供文件输入输出,目录和网络操作。提供文件输入输出,目录和网络操作。提供文件输入输出,目录和网络操作。提供文件输入输出,目录和网络操作。主窗口和相关类主窗口和相关类主窗口和相关类主窗口和相关类一切你所需要的典型现代主程序窗口,包括目录、工具条、工作区等等。一切你所需要的典型现代主程序窗口,包括目录、工具条、工作区等等。一切你所需要的典型现代主程序窗口,包括目录、工具条、工作区等等。一切你所需要的典型现代主程序窗口,包括目录、工具条、工作区等等。杂类杂类杂类杂类各种各样其他有用的类各种各样其他有用的类各种各样其他有用的类各种各样其他有用的类模块模块模块模块/视图类视图类视图
22、类视图类该类主要用于设计模块该类主要用于设计模块该类主要用于设计模块该类主要用于设计模块/视图平台的类。视图平台的类。视图平台的类。视图平台的类。对象模型对象模型对象模型对象模型QtQtQtQt图图图图形用形用形用形用户户户户界面的工具包底界面的工具包底界面的工具包底界面的工具包底层对层对层对层对象模型。象模型。象模型。象模型。组织者组织者组织者组织者用户接口组织者,比如:分隔器、用户接口组织者,比如:分隔器、用户接口组织者,比如:分隔器、用户接口组织者,比如:分隔器、TABTABTABTAB条、按钮组等等。条、按钮组等等。条、按钮组等等。条、按钮组等等。插件类插件类插件类插件类插件相关类。插
23、件相关类。插件相关类。插件相关类。标准对话框标准对话框标准对话框标准对话框用于文件、字体、颜色选择和更多的已经做好的对话框。用于文件、字体、颜色选择和更多的已经做好的对话框。用于文件、字体、颜色选择和更多的已经做好的对话框。用于文件、字体、颜色选择和更多的已经做好的对话框。模板类模板类模板类模板类QtQtQtQt的模板的模板的模板的模板库库库库容器容器容器容器类类类类。文本相关类文本相关类文本相关类文本相关类文本处理的类。(也可以参考文本处理的类。(也可以参考文本处理的类。(也可以参考文本处理的类。(也可以参考XMLXMLXMLXML类。)类。)类。)类。)线程类线程类线程类线程类提供线程支持
24、的类。提供线程支持的类。提供线程支持的类。提供线程支持的类。窗口外观和风格窗口外观和风格窗口外观和风格窗口外观和风格可以自定义风格、字体、颜色等等外观的类。可以自定义风格、字体、颜色等等外观的类。可以自定义风格、字体、颜色等等外观的类。可以自定义风格、字体、颜色等等外观的类。XMLXMLXMLXML类类类类支持支持支持支持XMLXMLXMLXML的类,例如:的类,例如:的类,例如:的类,例如:DOMDOMDOMDOM和和和和SAXSAXSAXSAX。Qtopia CoreQtopia CoreQtopia CoreQtopia Core类类类类是是是是Qtopia CoreQtopia Cor
25、eQtopia CoreQtopia Core一个特殊的类一个特殊的类一个特殊的类一个特殊的类(Qt(Qt(Qt(Qt的嵌入的嵌入的嵌入的嵌入Linux)Linux)Linux)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)、
26、是(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)构造
27、一个父对象为parent、文本为text的推动按钮。QPushButton(constQIcon&icon,constQString&text,QWidget*parent=0)构造一个图标为icon、文本为text、父对象为parent的推动按钮。注意:您可以传递一个QPixmap作为一个图标(感谢由C+提供的隐含类型转换)。Qt的组件Qt-C+图形用户界面库QPushButton()销毁这个推动按钮。voidQButton:setText(constQString&)设置这个按钮上显示的文本。voidQButton:pressed()当这个按钮被按下的时候,将要发射该信号。voidQPus
28、hButton:setMenu(QMenu*menu)这个按钮与弹出式的菜单menu联系在一起。这样就可以把一个普通的按钮变成菜单按钮,在该按钮的文本的右边会出现一个倒置的小三角。Qt的组件Qt-C+图形用户界面库5.1.1.3推动按钮的实例推动按钮的实例该实例的功能,当您按下退出按钮的时候,就会退出系统。以下是该实例的代码:/*main.cpp*/#include/当窗口初始化的时候,引用的头文件#include/定义QPushButton对象,引用的头文件intmain(intargc,char*argv)QApplicationapp(argc,argv);/窗体初始化QPushButt
29、on*pushbutton=newQPushButton(Quit);QObject:connect(pushbutton,SIGNAL(clicked(),pushbutton,SLOT(close();pushbutton-show();/显示该窗体returnapp.exec();运行该实例的结果,如图所示:Qt的组件Qt-C+图形用户界面库5.1.2单选按钮单选按钮5.1.2.1单选按钮的描述单选按钮的描述QRadioButton窗口部件为单选按钮提供了一个文本标签。QRadioButton是一个能够切换开(选择)或者关(没有选择)的选择按钮。通常单选按钮是用于当前用户选择许多中的一个
30、选项。在同一时刻,单选按钮组中仅仅只有一个按钮被选择;如果用户选择其他按钮,以前选择的按钮将要切换为关闭状态。当一个按钮切换开或者关的时候,它就会发射toggled()信号。如果任何时刻你想触发一个行为来改变按钮的状态的时候,可以连接这个信号。否则,使用isChecked()来查看是否有其他按钮被选择。像上述的QPushButton一样,单选按钮能够显示文本和可选择的小图标。文本能够在构造函数中被设置,或者使用setText()函数;设置图标可以使用setIcon()函数来设置。Qt的组件Qt-C+图形用户界面库5.1.2.2单选按钮的成员单选按钮的成员QRadioButton:QRadioB
31、utton(QWidget*parent=0)构造一个单选按钮的窗口组件,但是该组件没有文本或者图象映射。parent参数传递给QAbstractButton构造函数。QRadioButton:QRadioButton(constQString&text,QWidget*parent=0)构造一个单选按钮的窗体组件,该组件的参数为parent和text字符串。parent参数传递给QAbstractButton构造函数。Qt的组件Qt-C+图形用户界面库5.1.3复选按钮复选按钮5.1.3.1复选按钮的描述复选按钮的描述QCheckBox窗口部件提供一个带文本标签的复选按钮。QCheckBox
32、和QRadioButton都是选项按钮。QCheckBox能够在开(选中)或者关(未选中)之间切换。QCheckBox和QRadioButton的区别是在于对用户选择的限制。单选按钮定义了“多选一”的选择,而复选按钮定义了“多选多”的选择。QButtonGroup在视觉上能够把许多的复选按钮组合在一起,成为一个按钮组。无论复选按钮选中或者是未选中,它都会发射一个信号toggled()。在任何时刻,如果您想改变复选按钮的状态的时候,需要连接toggled()信号触发这个行为。您也可以利用isChecked()函数来查询复选按钮是否被选中。Qt的组件Qt-C+图形用户界面库除了常用的选中和未选中两
33、个状态,QCheckBox还可以任意选择第三种状态来表明“没有改变”。当您需要给用户一个选中或者未选中复选按钮的选择时,这是非常有用的。如果您需要第三种状态,可以通过setTristate()来使它生效,利用checkState()函数来查询当前的切换状态。与QPushButton一样,复选按钮可以显示文本或者任意的小图标。文本可以通过构造函数或者setText()来设置,图标可以通setIcon()来设置。Qt的组件Qt-C+图形用户界面库5.1.3.2复选按钮的成员复选按钮的成员QCheckBox:QCheckBox(QWidget*parent=0)构造一个参数为parent的复选按钮,
34、但是该按钮不显示文本信息。parent参数传递给QAbstractButton构造函数。QCheckBox:QCheckBox(constQString&text,QWidget*parent=0)构造一个参数为parent和text的复选按钮。parent参数传递给QAbstractButton构造函数。Qt:CheckStateQCheckBox:checkState()const返回复选框的复选状态。也可以参考setCheckState()函数和Qt:CheckState。Qt的组件Qt-C+图形用户界面库voidQCheckBox:setCheckState(Qt:CheckState
35、state)参数state是用来设置复选框的复选状态。voidQCheckBox:stateChanged(intstate)signal当复选框的状态改变的时候,就是发射stateChanged()信号。也就是说,用来检查用户选择还是没有选择。效果:Qt的组件Qt-C+图形用户界面库5.2标签标签5.2.1QLabel5.2.1.1QLabel的描述的描述QLabel窗口部件提供了显示文本或者图象,没有提供用户的交互功能。因为标签的外观可以通过各种各样的方式来配置,而且它可以为指定焦点记忆键到另外的窗体上。QLabel提供了以下内容类型:设置无格式的文本:可以通过setText()函数来设置
36、,它将接收到Qstring传递给它的文本信息。设置大量的文本:可以通过setText()函数来设置,它将接收到QString传递给它的大量信息。Qt的组件Qt-C+图形用户界面库设置图象映射:可以通过setPixmap()函数来设置,它将接收到QPixmap传递给它的图象映射的信息。设置数字:可以通过setNum()函数来设置,它将接收到int类型或者double类型的数字信息,该函数将这些数字转变为无格式的信息。如果什么都不设置,在默认的情况下为空;如果清除标签中的信息,可以利用clear()函数。当使用任何函数来改变标签中的内容的时候,当前标签中的内容将被清除。Qt的组件Qt-C+图形用户
37、界面库QLabel的外观可以通过几种方式来改变。QFrame所有设置在指定的框架窗体是可以使用的。QLabel窗体组件内容的位置可以通过setAlignment()和setIndent()函数来改变。文本内容可以通过setWordWrap()函数来设置字符根据哪个边界开始换行。例如:将一个字符串分成两行来显示,可以用以下方式来设置:QLabel*label=newQLabel(this);label-setFrameStyle(QFrame:Panel|QFrame:Sunken);label-setText(firstlinensecondline);label-setAlignment(Q
38、t:AlignButton|Qt:AlignRight);Qt的组件Qt-C+图形用户界面库QLabel是经常为交互式窗体制作标签。为了交互式窗体的使用Qlabel提供了添加助记符的有用机制(可以参考QKeysequence),这种机制将设置键盘焦点到另外的一个窗体上(调用QLabel的setBuddy()函数)。例如:QLineEdit*phoneEdit=newQLineEdit(this);QLabel*phoneLabel=newQLabel(&Phone:,this);phoneLabel-setBuddy(phoneEdit);在本实例中,当用户按Alt+P的时候,键盘焦点转移到标
39、签的buddy(theQLineEdit)中。如果buddy是按钮(继承QAbstractButton类),触发这个助记符,可以看作是按钮点击。可以参考QLineEdit、QTextEdit、QPixmap、QMovie和GUIDesignHandbook:Label。Qt的组件Qt-C+图形用户界面库效果:Qt的组件Qt-C+图形用户界面库5.2.1.2QLabel的成员的成员QLabel(QWidget*parent=0,Qt:WFlagsf=0)构造一个空的标签。parent和窗体标记f参数,将传递给QFrame构造函数。可以参考setAlignment()、setFrameStyle(
40、)和setIndent()。QLabel:QLabel(constQString&text,QWidget*parent=0,Qt:WFlagsf=0)构造一个显示文本为text的标签。parent和窗体标记f参数,将传递给QFrame构造函数。可以参考setAlignment()、setFrameStyle()和setIndent()。QLabel:QLabel()销毁这个标签。Qt的组件Qt-C+图形用户界面库QWidget*QLabel:buddy()const返回的一个标签的buddy。如果当前没有设置buddy,则返回为0。可以参考setBuddy()。voidQLabel:clea
41、r()槽槽用来清除标签中的任何内容。voidQLabel:setBuddy(QWidget*buddy)设置标签的buddy为另一个窗体的buddy。当用户按下这个标签提示的快捷键的时候,键盘焦点将转移到标签的buddy窗体中。buddy利用在一个文本信息中加前缀“&”字符的机制,它仅仅在QLabel中使用,这个“&”字符是用来设置快捷键的。该字符显示的是一个下划线,并且“&”字符不能显示出来。(也就是说,Qt:TextShowMnemonic改变对齐标记;参考setAlignment()。Qt的组件Qt-C+图形用户界面库如果在一个对话框中,您可能创建两个能够数据输入窗体部件,一个标签存放其
42、中任意一个窗口部件输入的信息。代码如何编写,请参考以下代码:QLineEdit*nameedit=newQLineEdit(this);QLabel*namelabel=newQLabel(&Name:,this);namelabel-setBuddy(nameedit);QLineEdit*phoneedit=newQLineEdit(this);QLabel*phonelabel=newQLabel(&Phone:,this);phonelabel-setBuddy(phoneedit);以上代码,当用户按Alt+N快捷键的时候,焦点就跳跃到Name字段;当用户按Alt+P的时候,焦点就跳
43、跃到Phone字段。如果先前不设置buddy,请将调用这个函数的参数buddy设置为0。可以参考buddy()、setText()、QShortcut和setAlignment()。Qt的组件Qt-C+图形用户界面库5.2.2QLCDNumber5.2.2.1QLCDNumber的描述的描述QLCDNumber窗口部件能够在LCD上面显示十进制、十六进制、八进制、二进制的数字。可以利用display()槽与数据源进行连接,能够重载五个任意类型的display()。如果您要显示一些超过显示范围的信息,您可以在QLCDNumber类中调用槽overflow(),来解决这个问题;如果您想改变LCD的
44、显示范围,可以通过调用函数setNumDigits()来完成,但是setSmallDecimalPoint()函数同样也可以改变它;如果您想显示十六进制、八进制、二进制、十进制的数值,您就可以调用函数setHexMode()、setOctMode()、setBinMode()、setDecMode()来将其设置。Qt的组件Qt-C+图形用户界面库QLCDNumber不但显示可以显示数字,而且还可以其他符号,例如:0/O、1、2、3、4、5/S、6、7、8、9/g、负数、小数、A、B、C、D、E、F、h、H、L、o、P、r、u、U、Y、冒号、温度符号和空格。QLCDNumber可以用空格代替非法
45、字符。注意:虽然您能够通过value()来检索数值,但是QLCDNumber对象的内容不能够被检索。如果您真正地需要文本,我们建议您使用信号-槽的机制来实现,可以将display()槽连接到其他槽中,并且将其存放在那里。效果:Qt的组件Qt-C+图形用户界面库5.2.2.2QLCDNumber的成员的成员QLCDNumber:QLCDNumber(QWidget*parent=0)构造一个LCDNumber。segmentStyle()函数用来设置其外观。parent参数,将传递给QFrame构造函数。也可以参考setNumDigits()和setSmallDecimalPoint()函数。Q
46、LCDNumber:QLCDNumber(uintnumDigits,QWidget*parent=0)构造一个LCD数字。参数numDigits是用来设置数字的数量。segmentStyle()函数用来设置其外观。parent参数,将传递给QFrame构造函数。也可以参考setNumDigits()和setSmallDecimalPoint()函数。Qt的组件Qt-C+图形用户界面库QLCDNumber:QLCDNumber()销毁这个LCD数字。boolQLCDNumber:checkOverflow(doublenum)const如果num太大了,以至于不能够全部显示,则返回为真;否则返
47、回为假。也可以参考display(),numDigits()和smallDecimalPoint()。boolQLCDNumber:checkOverflow(intnum)const为了使用方便,将checkOverflow()函数进行了重载。如果num太大了,以至于不能够全部显示,则返回为真;否则返回为假。也可以参考display(),numDigits()和smallDecimalPoint()。voidQLCDNumber:overflow()signal当在LCD上显示太长的数字或者太长的字符串的时候,就可以发射overflow()信号。Qt的组件Qt-C+图形用户界面库QLCDNu
48、mber:QLCDNumber()销毁这个LCD数字。boolQLCDNumber:checkOverflow(doublenum)const如果num太大了,以至于不能够全部显示,则返回为真;否则返回为假。也可以参考display(),numDigits()和smallDecimalPoint()。boolQLCDNumber:checkOverflow(intnum)const为了使用方便,将checkOverflow()函数进行了重载。如果num太大了,以至于不能够全部显示,则返回为真;否则返回为假。也可以参考display(),numDigits()和smallDecimalPoint
49、()。voidQLCDNumber:overflow()signal当在LCD上显示太长的数字或者太长的字符串的时候,就可以发射overflow()信号。Qt的组件Qt-C+图形用户界面库5.3.组合框组合框5.3.1组合框的描述组合框的描述QGroupBox窗口部件提供了一个有标题的组合框。组合框提供了一个框架、一个标题和一个键盘快捷键,显示在它里面地其他不同窗口部件。标题在上面,键盘快捷键移动键盘焦点到组合框的一个子窗口部件,子窗口部件将会排列在这个框架中的一个数组中。QGroupBox也可以自己设置标题(通常在构造函数中设置),利用alignment()函数来设置标题的对齐方式。Qt的组
50、件Qt-C+图形用户界面库5.3.2组合框的成员组合框的成员QGroupBox:QGroupBox(QWidget*parent=0)构造一个父窗体为parent,没有标题的组合框。QGroupBox:QGroupBox(constQString&title,QWidget*parent=0)构造一个父窗体为parent,标题为title的组合框。QGroupBox:QGroupBox()销毁这个组合框。voidQGroupBox:toggled(boolon)signal如果组合框中有一个复选框(参考isCheckable(),如果您想切换复选框的时候,就要发射toggled()信号。如果选