QT常用类整理QApplicationQWidget*QApplication::activeWindow()const返回拥有键盘输入焦点的应用程序顶级窗口,或者如果没有应用程序窗口拥有焦点,返回0。注意尽管可能没有focusWidget(),仍然有可能activeWindow(),例如如果在窗口中没有窗口部件接收键盘事件。voidQApplication::addLibraryPath(constQString&path)[静态]把path添加到库路径列表的末尾。如果path为空或者已经在路径列表中,路径列表不会被改变。默认路径列表包含一个单一的条目$QTDIR/plugins。voidQApplication::closeAllWindows()[槽]关闭所有顶级窗口。QDesktopWidget*QApplication::desktop()[静态]返回桌面窗口部件(也调用根窗口)。桌面窗口部件对于获得屏幕大小很有用。在桌面上绘制也是可能的。我们建议不要假设可以在桌面上绘制,因为它不能在所有的操作系统上工作。intQApplication::exec()进入主事件循环并且等待,直到exit()被调用或者主窗口部件被销毁,并且返回值被设置为exit()(如果通过quit(),exit()被调用,为0)。需要调用这个函数来开始事件处理。主事件循环从窗口系统中接收事件并且把它们分派给应用程序窗口部件。voidQApplication::exit(intretcode=0)[静态]告诉应用程序退出,伴随一个返回代码QFontQApplication::font(constQWidget*w=0)[静态]返回窗口部件w的默认字体,或者如果w为0,返回默认应用程序字体。voidQApplication::setColorSpec(intspec)[静态]设置应用程序的颜色策略为spec。颜色策略控制着当在一个显示颜色总数有限制的情况下运行应用程序如何分配颜色,例如8位/256色显示voidQApplication::setStyle(QStyle*style)[静态]设置应用程序的图形用户界面风格为style。风格对象的所有权被移交给QApplication,所以当应用程序退出时或者当新的风格被设置时QApplication会删除这个风格对象QStyle*QApplication::setStyle(constQString&style)[静态]这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。使用QStyleFactory来为style创建一个QStyle对象。这个字符串必须是QStyleFactory::keys()之一,通常是“windows”、“motif”、“cde”、“motifplus”、“platinum”、“sgi”和“compact”。根据平台,“windowsxp”、“aqua”或“macintosh”也是可以用的。如果一个未知的style被传递,返回0。QStyle&QApplication::style()[静态]返回应用程序的风格对象。QWidgetQWidget类是所有用户界面对象的基类。窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。QDialog是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。一个没有父窗口部件的窗口部件一直是顶级窗口部件。非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的。(当然把一个按钮作为或者叫做顶级窗口部件也是可能的,但绝大多数人喜欢把他们的按钮放到其它按钮当中,比如QDialog。)QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPushButton、QListBox和QTabDialog等等。每一个窗口部件构造函数接受两个或三个标准参数:QWidget*parent=0是新窗口部件的父窗口部件。如果为0(默认),新的窗口部件将是一个顶级窗口部件。如果不是,它将会使parent的一个孩子,并且被parent的几何形状所强迫(除非你指定WType_TopLevel作为窗口部件标记)。constchar*name=0是新窗口部件的窗口部件名称。你可以使用name()来访问它。窗口部件名称很少被程序员用到,但是对于图形用户界面构造程序,比如Qt设计器,是相当重要的(你可以在Qt设计器中命名一个窗口部件,并且在你的代码中使用这个名字来连接它)。dumpObjectTree()调试函数也使用它。WFlagsf=0(在可用的情况下)设置窗口部件标记,默认设置对于几乎所有窗口部件都是适用的,但是,举例来说,一个没有窗口系统框架的顶级窗口部件,你必须使用特定的标记。tictac/tictac.cpp实例程序是一个简单窗口部件的好实例。它包含了一些的事件处理器(就像所有窗口部件所必须的那样)、一些被指定给它的定制处理(就像所有有用的窗口部件做的那样)并且还有一些孩子和联机。它所做的每一件事都响应对应的一个事件:这是到目前为止设计图形用户界面的最普通的方式。你自己将需要为你的窗口部件提供内容,但是这里是一些简要的运行事件,从最普通的开始:paintEvent()-只要窗口部件需要被重绘就被调用。每个要显示输出的窗口部件必须实现它并且不在paintEvent()之外在屏幕上绘制是明智的。resizeEvent()-当窗口部件被重新定义大小时被调用。mousePressEvent()-当鼠标键被按下时被调用。有六个鼠标相关事件,但是鼠标按下和鼠标释放事件是到目前为止最重要的。当鼠标在窗口部件内或者当它使用grabMouse()来捕获鼠标时,它接收鼠标按下事件。mouseReleaseEvent()-当鼠标键被释放时被调用。当窗口部件已经接收相应的鼠标按下事件时,它接收鼠标释放事件。这也就是说如果用户在你的窗口部件内按下鼠标,然后拖着鼠标到其它某个地方,然后释放,你的窗口部件接收这个释放事件。这里有一个例外:如果出现在弹出菜单中,当鼠标键被按下时,这个弹出菜单立即会偷掉这个鼠标事件。mouseDoubleClickEvent()-和它看起来也许不太一样。如果用户双击,窗口部件接收一个鼠标按下事件(如果他们没有拿牢鼠标,也许会出现一个或两个鼠标移动事件)、一个鼠标释放事件并且最终是这个事件。直到你看到第二次点击是否到来之前,不能从一个双击中辨别一个点击。(这是为什么绝大多数图形用户界面图书建议双击是单击的一个扩展,而不是一个不同行为的触发的一个原因。)如果你的窗口部件仅仅包含子窗口部件,你也许不需要实现任何一个事件处理器。如果你想检测在子窗口部件中的鼠标点击,请在父窗口部件的mousePressEvent()中调用子窗口部件的hasMouse()函数。接收键盘的窗口部件需要重新实现一些更多的事件处理器:keyPressEvent()-只要键被按下和当键已经被按下足够长的时间可以自动重复了就被调用。注意如果Tab和Shift+Tab键被用在焦点变换机制中,它们仅仅被传递给窗口部件。为了强迫那些键被你的窗口部件处理,你必须重新实现QWidget::event()。focusInEvent()-当窗口部件获得键盘焦点(假设你已经调用setFocusPolicy())时被调用。写得好的窗口部件意味着它们能按照一种清晰但谨慎的方式来获得键盘焦点。focusOutEvent()-当窗口部件失去键盘焦点时被调用。一些窗口部件也许需要实现一些不太普通的事件处理器:mouseMoveEvent()-只要当鼠标键被按下时鼠标移动就会被调用。举例来说,对于拖动,这个很有用。如果你调用setMouseTracking(TRUE),尽管没有鼠标键被按下,你也会获得鼠标移动事件。(注意这个使用鼠标跟踪的应用程序在低下的X连接下不是很有用。)(也可以参考拖放信息。)keyReleaseEvent()-只要键被释放和当如果这个键是自动重复的并且被按下一段时间时就被调用。在这种情况下窗口部件接收一个键释放事件并且对于每一个重复立即有一个键按下事件。注意如果Tab和Shift+Tab键被用在焦点变换机制中,它们仅仅被传递给窗口部件。为了强迫那些键被你的窗口部件处理,你必须重新实现QWidget::event()。wheelEvent()--当窗口部件拥有焦点时,只要用户转动鼠标滚轮就被调用。enterEvent()-当鼠标进入这个窗口部件屏幕空间时被调用。(这不包括被这个窗口部件的子窗口部件所拥有的屏幕空间。)leaveEvent()-当鼠标离开这个窗口部件的屏幕空间时被调用。moveEvent()-当窗口部件相对于它的父窗口部件已经被移动时被调用。closeEvent()-当用户关闭窗口部件时(或这当close()被调用时)被调用。这里还有一些不太明显的事件。它们在qevent.h中被列出并且你需要重新实现event()来处理它们。event()的默认实现处理Tab和Shift+Tab(移动键盘焦点)并且其它绝大多数事件给上面提到的一个或更多的特定处理器。当实现一个窗口部件时,还有一些更多的事情要考虑。在构造函数中,在你可能收到一个事件的任何机会之前,请确认尽早地设置你的成员变量。重新实现sizeHint()在绝大多数情况下都是很有用的并且使用setSizePolicy(),来设置正确的大小策略,这样你的同事可以更容易地设置布局管理器。一个大小策略可以让你为布局管理器提供好的默认情况,这样其它窗口部件可以很容易地包含和管理你的窗口部件。sizeHint()为这个窗口部件说明一个“好的”大小。如果你的窗口部件是一个顶级窗口部件,setCaption()和setIcon()分别设置标题栏和图标。QWidget::QWidget(QWidget*parent=0,constchar*name=0,WFlagsf=0)构造一个是parent的孩子、名称为name并且窗口部件标记为f的窗口部件。如果parent为0,新的窗口部件变为顶级窗口。如果parent是另一个窗口部件,这个窗口部件变为parent中的一个子窗口。当它的parent被删除时,新的窗口部件被删除。name被发送给QObject的构造函数。voidQWidget::adjustSize()[虚]调整窗口部件的大小来适合它的内容。QSizeQWidget::baseSize()const返回窗口部件的继承大小。详细情况请参考“baseSize”属性。QWidget*QWidget::childAt(intx,inty,boolincludeThis=FALSE)const返回在窗口部件自己的坐标系统中像素位置(x,y)处的可视的子窗口部件。boolQWidget::close()[槽]关闭这个窗口部件。如果窗口部件被关闭,返回真,否则返回假。voidQWidget::drawText(intx,inty,constQString&str)在位置(x,y)绘制字符串strQFontQWidget::font()const返回这个窗口部件的字体当前设置。voidQWidget::fontChange(constQFont&oldFont)[虚保护]这个虚函数是从setFont()中被调用的。oldFont是以前的字体,你可以