| 主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数 |
QWidget类是所有用户界面对象的基类。 详情请见……
#include <qwidget.h>
被QButton、QFrame、QDialog、QComboBox、QDataBrowser、QDataView、QDateTimeEdit、QDesktopWidget、QDial、QDockArea、QGLWidget、QHeader、QMainWindow、QNPWidget、QScrollBar、QSizeGrip、QSlider、QSpinBox、QStatusBar、QTabBar、QTabWidget、QWorkspace和QXtWidget继承。
窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
QDialog是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。
一个没有父窗口部件的窗口部件一直是顶级窗口部件。
非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的。(当然把一个按钮作为或者叫做顶级窗口部件也是可能的,但绝大多数人喜欢把他们的按钮放到其它按钮当中,比如QDialog。)
QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPushButton、QListBox和QTabDialog等等。
每一个窗口部件构造函数接受两个或三个标准参数:
tictac/tictac.cpp实例程序是一个简单窗口部件的好实例。它包含了一些的事件处理器(就像所有窗口部件所必须的那样)、一些被指定给它的定制处理(就像所有有用的窗口部件做的那样)并且还有一些孩子和联机。它所做的每一件事都响应对应的一个事件:这是到目前为止设计图形用户界面的最普通的方式。
你自己将需要为你的窗口部件提供内容,但是这里是一些简要的运行事件,从最普通的开始:
如果你的窗口部件仅仅包含子窗口部件,你也许不需要实现任何一个事件处理器。如果你想检测在子窗口部件中的鼠标点击,请在父窗口部件的mousePressEvent()中调用子窗口部件的hasMouse()函数。
接收键盘的窗口部件需要重新实现一些更多的事件处理器:
一些窗口部件也许需要实现一些不太普通的事件处理器:
这里还有一些不太明显的事件。它们在qevent.h中被列出并且你需要重新实现event()来处理它们。event()的默认实现处理Tab和Shift+Tab(移动键盘焦点)并且其它绝大多数事件给上面提到的一个或更多的特定处理器。
当实现一个窗口部件时,还有一些更多的事情要考虑。
也可以参考QEvent、QPainter、QGridLayout、QBoxLayout和抽象窗口部件类。
这个枚举变量定义了用于绘制窗口部件背景像素映射的原点。
被绘制的像素映射使用:
这个枚举变量定义了一个窗口部件获得键盘焦点所依据的不同策略。
policy可以是:
如果parent为0,新的窗口部件变为顶级窗口。如果parent是另一个窗口部件,这个窗口部件变为parent中的一个子窗口。当它的parent被删除时,新的窗口部件被删除。
name被发送给QObject的构造函数。
窗口部件标记参数f通常为0,但它可以为顶级窗口部件设置自定义的窗口框架(比如,parent必须为0)。为了自定义框架,设置WStyle_Customize标记和任何一个Qt::WidgetFlags进行或运算。
如果你向一个已经可见的窗口部件中添加一个子窗口部件,你必须明显地显示这个孩子来使它可视。
注意Qt的X11版本也许不能在所有的系统上传递风格标记得所有组合。这是因为在X11上,Qt只能询问窗口管理器,并且窗口管理器会覆盖应用程序的设置。在Windows上,Qt可以是指你想要的任何标记。
实例:
QLabel *splashScreen = new QLabel( 0, "mySplashScreen",
WStyle_Customize | WStyle_NoBorder |
WStyle_Tool );
首先这个窗口部件的孩子都被删除。如果这个窗口部件是主窗口部件,应用程序退出。
如果对于这个窗口部件放下事件生效,返回真,否则返回假。详细情况请参考“acceptDrops”属性。
如果sizeHint()有效(比如,如果大小提示的宽和高都大于等于0)就是用它,否则设置大小为子对象所占用的矩形(所有子窗口部件几何形状的合集)。
也可以参考sizeHint和childrenRect。
实例:xform/xform.cpp。
在QMessageBox中被重新实现。
如果对于这个窗口部件自动面具特征生效,返回真,否则返回假。详细情况请参考“autoMask”属性。
返回这个窗口部件的背景画刷。详细情况请参考“backgroundBrush”属性。
作为替代请使用paletteBackgroundColor()或eraseColor()。
返回绘制窗口部件的背景所使用的颜色功能。详细情况请参考“backgroundMode”属性。
返回窗口部件的背景的原点。详细情况请参考“backgroundOrigin”属性。
作为替代请使用paletteBackgroundPixmap()或者erasePixmap()。
实例:themes/metal.cpp和themes/wood.cpp。
返回窗口部件的继承大小。详细情况请参考“baseSize”属性。
返回窗口标题。详细情况请参考“caption”属性。
如果includeThis为真,并且在(x, y)没有可视的孩子,那么这个窗口部件本身被返回。
返回在窗口部件自己的坐标系统中点p处的可视的子窗口部件。
如果includeThis为真,并且在p没有可视的孩子,那么这个窗口部件本身被返回。
返回这个窗口部件的孩子的边界矩形。详细情况请参考“childrenRect”属性。
返回这个窗口部件的孩子所占用的组合区域。详细情况请参考“childrenRegion”属性。
如果这个窗口部件有激活的焦点,焦点移出事件被发送给这个窗口部件告诉它关于它失去了焦点。
这个窗口部件必须已经为了获得键盘输入焦点使焦点设置生效,比如,它必须调用setFocusPolicy()。
也可以参考focus、setFocus()、focusInEvent()、focusOutEvent()、focusPolicy和QApplication::focusWidget()。
也可以参考setMask()。
清空窗口部件标记f。
窗口部件标记是Qt::WidgetFlags的组合。
也可以参考testWFlags()、getWFlags()和setWFlags()。
关闭这个窗口部件。如果窗口部件被关闭,返回真,否则返回假。
首先它发送给这个窗口部件一个QCloseEvent。如果它接收这个关闭事件,它就被隐藏了。QWidget::closeEvent()的默认实现是接收这个关闭事件。
当最后一个可视的顶级窗口部件被关闭,QApplication::lastWindowClosed()信号被发射。
实例:mdi/application.cpp和popup/popup.cpp。
关闭这个窗口部件。如果窗口部件被关闭,返回真,否则返回假。
如果alsoDelete为真或者这个窗口部件有WDestructiveClose窗口部件标记,这个窗口部件也被删除。这个窗口部件自己可以通过抵制它所收到的QCloseEvent来防止被关闭。
当最后一个可视的顶级窗口部件被关闭,QApplication::lastWindowClosed()信号被发射。
注意关闭QApplication::mainWidget()会终止应用程序。
也可以参考closeEvent()、QCloseEvent、hide()、QApplication::quit()、QApplication::setMainWidget()和QApplication::lastWindowClosed()。
默认实现是调用e->accept(),它隐藏这个窗口部件。详细情况请参考QCloseEvent文档。
也可以参考event()、hide(), close()和QCloseEvent。
实例:action/application.cpp、application/application.cpp、i18n/mywidget.cpp、popup/popup.cpp和qwerty/qwerty.cpp。
返回这个窗口部件调色板的当前颜色组。详细情况请参考“colorGroup”属性。
确认这个窗口部件通过调用polish()被适当地初始化了。
从像sizeHint()这样依赖于这个窗口部件被初始化的函数中调用constPolish(),并且也可以在show()之前被调用。
警告:不要在窗口部件的构造函数中调用constPolish()。
也可以参考polish()。
默认实现是调用e->accept(),它拒绝这个上下文事件。详细情况请参考QContextMenuEvent文档。
也可以参考event()和QContextMenuEvent。
如果initializeWindow为真,初始化窗口(设置几何形状等等)。如果initializeWindow为假,没有初始化被执行。这个参数只有在window是有效窗口时才有效。
如果destroyOldWindow为真,销毁就的窗口。如果destroyOldWindow为假,你有责任自己销毁这个窗口(使用平台本地代码)。
QWidget构造函数调用create(0,TRUE,TRUE)来为这个窗口部件创建窗口。
返回这个窗口部件的光标外形。详细情况请参考“cursor”属性。
如果这个窗口部件想手工地处理这是什么的帮助,返回真,否则返回假。详细情况请参考“customWhatsThis”属性。
对于所有的子窗口部件,destroy()循环地调用自己,传递给destroySubWindows一个destroyWindow参数。为了对子窗口部件地销毁进行控制,首先有选择地销毁子窗口部件。
这个函数通常被QWidget析构函数调用。
对于在你的应用程序中如何提供拖放的概述请参考拖放文档。
也可以参考QTextDrag、QImageDrag和QDragEnterEvent。
实例:iconview/simple_dd/main.cpp。
对于在你的应用程序中如何提供拖放的概述请参考拖放文档。
也可以参考QTextDrag、QImageDrag和QDragLeaveEvent。
对于在你的应用程序中如何提供拖放的概述请参考拖放文档。
也可以参考QTextDrag、QImageDrag和QDragMoveEvent。
y位置是文本的基线位置。使用默认字体和默认前景色绘制文本。
这个函数的提供是为了方便。你使用painter替代它一般将会获得更灵活的结果和更快的速度。
也可以参考font、foregroundColor()和QPainter::drawText()。
在位置pos绘制字符串str。
对于在你的应用程序中如何提供拖放的概述请参考拖放文档。
也可以参考QTextDrag、QImageDrag和QDropEvent。
实例:iconview/simple_dd/main.cpp。
isEnabled(). 这个虚函数被setEnabled()调用。oldEnabled是以前的设置,你可以从isEnabled()中得到新的设置。
如果你的窗口部件需要知道什么时候它变为有效或无效,请重新实现这个函数。你将几乎必然要使用update()来更新这个窗口部件。
默认实现是重新绘制窗口部件的可见部分。
也可以参考enabled、enabled、repaint()、update()和visibleRect。
当鼠标光标进入窗口部件,这个事件被发送给窗口部件。
也可以参考leaveEvent()、mouseMoveEvent()和event()。
如果w为负数,它被width()-x替换。如果h为负数,它被height()-y替换。
子窗口部件不被影响。
也可以参考repaint()。
这个版本擦除整个窗口部件。
在窗口部件中擦除指定区域r,并不产生绘制事件。
在窗口部件中擦除reg定义的区域,并不产生绘制事件。
子窗口部件不被影响。
返回这个窗口部件的擦除色。
也可以参考setEraseColor()、setErasePixmap()和backgroundColor()。
也可以参考setErasePixmap()和eraseColor()。
主事件首先把事件传递给所有已经被安装的事件过滤器。如果没有过滤器中途截取这个事件,它调用一个特定的事件处理器。
键按下和释放事件被处理得和其它事件不同。event()检查Tab和Shift+Tab并且试图适当地移动焦点。如果没有窗口部件被焦点移入(或者键按下不是Tab或Shift+Tab),event()调用keyPressEvent()。
如果它能够把一个事件传递给没个东西,这个函数就返回真,否则如果没有任何东西想要这个事件,返回假。
也可以参考closeEvent()、focusInEvent()、focusOutEvent()、enterEvent()、keyPressEvent()、keyReleaseEvent()、leaveEvent()、mouseDoubleClickEvent()、mouseMoveEvent()、mousePressEvent()、 mouseReleaseEvent()、moveEvent()、paintEvent()、resizeEvent()、QObject::event()和QObject::timerEvent()。
从QObject中被重新实现。
窗口标识符类型依赖于底下的窗口系统,实际定义请参考qwindowdefs.h。如果没有具有这样的标识符的窗口部件,0被返回。
焦点数据总是属于顶级窗口部件。焦点数据列表包含这个可以接收焦点的顶级窗口部件中所有的窗口部件,按Tab顺序。一个迭代器指向当前焦点窗口部件(focusWidget()返回这个窗口部件的指针)。
这个信息对于重新实现更先进版本的focusNextPrevChild()很有用。
一个窗口部件通常必须使用setFocusPolicy()来接收焦点事件,除了NoFocus的。(注意应用程序的程序员可以在任何一个窗口部件中调用setFocus(),即使是那些通常不接收焦点的。)
如果它接收了焦点,默认实现是更新这个窗口部件(请参考focusPolicy())。它也调用setMicroFocusHint(),提示任何系统指定的输入工具关于用户注意的焦点。
也可以参考focusOutEvent(), focusPolicy、keyPressEvent()、keyReleaseEvent()、event()和QFocusEvent。
在QtMultiLineEdit中被重新实现。
如果next为真,这个函数就“向前”搜索,如果next为假,它就“向后”搜索。
有时,你想重新实现这个函数。例如,一个网页浏览器也许会重新实现它用来向前或向后移动“当前激活链接”,并且只有到达“页面”的最后一个或第一个链接时调用QWidget::focusNextPrevChild()。
子窗口部件在它们的父窗口部件上调用focusNextPrevChild(),但是只有顶级窗口部件可以重定向焦点。通过重载一个对象中的这个方法,你可以获得能够遍历所有子窗口部件的焦点控制。
也可以参考focusData()。
一个窗口部件通常必须使用setFocusPolicy()来接收焦点事件,除了NoFocus的。(注意应用程序的程序员可以在任何一个窗口部件中调用setFocus(),即使是那些通常不接收焦点的。)
默认实现是调用repaint(),因为窗口部件的colorGroup()从激活变为通常,所以这个窗口部件也许需要重新绘制。它也调用setMicroFocusHint(),提示任何系统指定的输入工具关于用户注意的焦点。
也可以参考focusInEvent()、focusPolicy、keyPressEvent()、keyReleaseEvent()、event()和QFocusEvent.
实例:qmag/qmag.cpp。
返回窗口部件接收键盘焦点的方式。详细情况请参考“focusPolicy”属性。
也可以参考setFocusProxy()。
返回这个窗口部件的字体当前设置。详细情况请参考“font”属性。
这个虚函数是从setFont()中被调用的。oldFont是以前的字体,你可以通过font()获得新的字体。
如果你的窗口部件需要直到什么时候它的字体改变了,就重新实现这个函数。你将几乎毫无疑问的需要使用update()更新这个窗口部件。
默认实现是更新包括它的几何形状的窗口部件。
也可以参考font、font、update()和updateGeometry()。
返回这个窗口部件当前字体的字体信息。等于QFontInto(widget->font())。
也可以参考font、fontMetrics()和font。
返回这个窗口部件的当前字体的字体规格。等于 QFontMetrics(widget->font())。
实例:drawdemo/drawdemo.cpp和qmag/qmag.cpp。
返回相对于它的父对象包含任何窗口框架的窗口部件的几何形状。详细情况请参考“frameGeometry”属性。
返回包含任何窗口框架的窗口部件的大小。详细情况请参考“frameSize”属性。
返回相对于它的父对象不包括窗口框架的窗口部件的几何形状。详细情况请参考“geometry”属性。
返回这个窗口部件的窗口部件标记。
窗口部件就是Qt::WidgetFlags的一个组合。
也可以参考testWFlags(), setWFlags()和clearWFlags()。
这个窗口部件接收所有的键盘事件并且其它窗口部件将不会得到直到releaseKeyboard()被调用。鼠标事件不受影响。如果你想捕获鼠标事件,请使用grabMouse()。
焦点窗口部件不受影响,除非它不接收任何键盘事件。setFocus()像平常那样移动焦点,但是只有在releaseKeyboard()被调用之后,新的焦点窗口部件才能接收键盘事件。
如果一个不同的窗口部件当前正在捕获键盘焦点,那么那个窗口部件的捕获首先被释放。
也可以参考releaseKeyboard()、grabMouse()、releaseMouse()和focusWidget()。
这个窗口部件接收所有的鼠标事件并且其它窗口部件将不会得到直到releaseMouse()被调用。键盘事件不受影响。如果你想捕获键盘事件,请使用grabKeyboard()。
警告:捕获鼠标的应用程序的bug经常会锁定终端。请特别仔细地使用这个函数,并且在调试的时候考虑使用-nograb命令行参数。
在使用Qt的时候,几乎不需要捕获鼠标,因为Qt非常聪明地捕获它、释放它。在特殊情况下,当鼠标按键被按下并且保持这种状态直到最后一个按键被释放时,Qt捕获鼠标。
注意只有可视的窗口部件可以捕获鼠标输入。如果一个窗口部件的isVisible()返回假,这个窗口部件不能调用grabMouse()。
也可以参考releaseMouse()、grabKeyboard()、releaseKeyboard()、grabKeyboard()和focusWidget()。
捕获鼠标输入并且改变光标形状。
光标将被赋值为形状cursor(只要在鼠标焦点被捕获)并且这个窗口部件将变为唯一接收鼠标事件的窗口部件直到releaseMouse()被调用。
警告:不过鼠标也许会锁定终端。
也可以参考releaseMouse()、grabKeyboard()、releaseKeyboard()和cursor。
如果这个窗口部件(或者它的焦点代理)拥有键盘输入焦点,返回真,否则返回假。详细情况请参考“focus”属性。
如果窗口部件在鼠标光标之下,返回真,否则返回假。详细情况请参考“underMouse”属性。
如果这个窗口部件中鼠标跟踪生效,返回真,否则返回假。详细情况请参考“mouseTracking”属性。
返回不包括窗口框架的窗口部件的高度。详细情况请参考“height”属性。
警告:不要考虑窗口部件的布局。
你几乎不需要重新实现这个函数。如果你需要在一个窗口部件被隐藏之后做些什么,请使用hideEvent()替代。
也可以参考hideEvent()、hidden、show()、showMinimized()、visible和close()。
实例:mdi/application.cpp、network/ftpclient/ftpmainwindow.cpp、popup/popup.cpp、 progress/progress.cpp、scrollview/scrollview.cpp和xform/xform.cpp。
在QMenuBar中被重新实现。
在窗口部件被隐藏之后,隐藏事件被立即发送给窗口部件。
也可以参考event()和QHideEvent。
在QScrollBar中被重新实现。
返回窗口部件图标像素映射。详细情况请参考“icon”属性。
返回窗口部件图标文本。详细情况请参考“iconText”属性。
默认实现是调用e->ignore(),它拒绝输入法事件。详细情况请参考QIMEvent文档。
默认实现是调用e->ignore(),它拒绝输入法事件。详细情况请参考QIMEvent文档。
默认实现是调用e->ignore(),它拒绝输入法事件。详细情况请参考QIMEvent文档。
如果这个窗口部件是激活窗口或者它的一个孩子,返回真,否则返回假。详细情况请参考“isActiveWindow”属性。
如果这个窗口部件是一个桌面窗口部件,比如,它代表着桌面,返回真,否则返回假。详细情况请参考“isDesktop”属性。
如果这个窗口部件是一个对话框窗口部件,返回真,否则返回假。详细情况请参考“isDialog”属性。
如果这个窗口部件是生效的,返回真,否则返回假。详细情况请参考“enabled”属性。
如果这个窗口部件自身或者它的每一个祖先,但是除了ancestor以外,已经被明确地指定为失效的时候,才是这样的情况。
isEnabledTo(0)等于isEnabled()。
这个函数是被反对的。它等于isEnabled()。
如果这个窗口部件接收键盘焦点,返回真,否则返回假。详细情况请参考“focusEnabled”属性。
如果这个窗口部件被明确地隐藏,返回真,否则返回假。详细情况请参考“hidden”属性。
如果窗口部件是被最大化的顶级窗口部件,返回真,否则返回假。
注意因为一些窗口系统的一些限制,这样做并不是总能得到所期望的结果(比如,如果在X11上的用户通过窗口管理器最大化这个窗口,Qt并不能把它与其它重定义大小区分开)。这有待于窗口管理器协议的进一步改进。
也可以参考showMaximized()。
如果这个窗口部件最小化(变为图标了),返回真,否则返回假。详细情况请参考“minimized”属性。
如果这个窗口部件是模式窗口部件,返回真,否则返回假。详细情况请参考“isModal”属性。
如果这个窗口部件是弹出窗口部件,返回真,否则返回假。详细情况请参考“isPopup”属性。
如果这个窗口部件是顶级窗口部件,返回真,否则返回假。详细情况请参考“isTopLevel”属性。
如果更新是生效的,返回真,否则返回假。详细情况请参考“updatesEnabled”属性。
如果这个窗口部件是可视的,返回真,否则返回假。详细情况请参考“visible”属性。
如果这个窗口部件自身或者它的每一个祖先,但是除了ancestor以外,已经被明确地指定为隐藏的时候,才是这样的情况。
如果这个窗口部件被屏幕上其它窗口弄得变暗,这个函数仍会返回真,但是如果它或者它们被移动了,它将被变为物理可视的。
isVisibleTo(0)和isVisible()很相似,除了它变为图标的情况或者这个窗口存在与其它虚拟桌面的情况。
这个函数是被反对的。它等于isVisible()。
窗口部件最初必须调用setFocusPolicy()来接收焦点并且得到焦点用来接收键盘释放事件。
如果你重新实现这个处理器,如果你不能理解这个事件,你就忽略(ignore())这个事件,这是很重要的,这样这个窗口部件的父对象就可以说明它。
默认实现是如果用户按下Esc就关闭弹出窗口部件。否则这个事件就被忽略。
也可以参考keyReleaseEvent()、QKeyEvent::ignore()、focusPolicy, focusInEvent()、focusOutEvent()、event()和QKeyEvent。
在QLineEdit、QTextEdit和QtMultiLineEdit中被重新实现。
窗口部件最初必须调用setFocusPolicy()来接收焦点并且得到焦点用来接收键盘释放事件。
如果你重新实现这个处理器,如果你不能理解这个事件,你就忽略(ignore())这个事件,这是很重要的,这样这个窗口部件的父对象就可以说明它。
默认实现就是忽略这个事件。
也可以参考keyPressEvent()、QKeyEvent::ignore()、focusPolicy、focusInEvent()、focusOutEvent()、event()和QKeyEvent。
如果在这个应用程序中当前没有正在捕获键盘的窗口部件,0被返回。
也可以参考grabMouse()和mouseGrabber()。
返回管理窗口部件孩子的几何形状的布局引擎的指针。
如果这个窗口部件没有布局,layout()返回一个零指针。
也可以参考sizePolicy。
实例:chart/optionsform.cpp和fonts/simple-qfont-demo/viewer.cpp。
当鼠标光标离开这个窗口部件时,离开事件被发送给这个窗口部件。
也可以参考enterEvent()、mouseMoveEvent()和event()。
如果在屏幕上有与这个窗口部件重叠的兄弟,这个窗口部件将被它后来的这些兄弟变暗。
也可以参考raise()和stackUnder()。
在你重新实现的这个函数中,如果你想停止Qt对这个事件的处理,返回真。如果你返回假,这个本地事件被回传给Qt,它会把这个事件转换为一个Qt事件并且把它发送给这个窗口部件。
警告:这个函数是不可以移植的。
也可以参考QApplication::macEventFilter()。
也可以参考mapTo()、mapFromParent()、mapFromGlobal()和underMouse。
也可以参考mapToGlobal()、mapFrom()和mapFromParent()。
如果窗口部件没有父对象,就和mapFromGlobal()一样。
也可以参考mapToParent()、mapFrom()、mapFromGlobal()和underMouse。
也可以参考mapFrom()、mapToParent()、mapToGlobal()和underMouse。
mapToGlobal(QPoint(0,0))将会给出这个窗口部件的左上角像素的全局坐标。
也可以参考mapFromGlobal()、mapTo()和mapToParent()。
如果窗口部件没有父对象,就和mapToGlobal()一样。
也可以参考mapFromParent()、mapTo()、mapToGlobal()和underMouse。
返回这个窗口部件的最大高度。详细情况请参考“maximumHeight”属性。
返回这个窗口部件的最大大小。详细情况请参考“maximumSize”属性。
返回这个窗口部件的最大宽度。详细情况请参考“maximumWidth”属性。
使用QPaintDeviceMetrics来替代它。
m是要获得的规格。
返回这个窗口部件的当前设置的微焦点提示的当前设置。详细情况请参考“microFocusHint”属性。
返回这个窗口部件的最小高度。详细情况请参考“minimumHeight”属性。
返回这个窗口部件的最小大小。详细情况请参考“minimumSize”属性。
返回这个窗口部件的建议最小大小。详细情况请参考“minimumSizeHint”属性。
在QLineEdit和QtMultiLineEdit中被重新实现。
返回这个窗口部件的最小宽度。详细情况请参考“minimumWidth”属性。
默认实现产生一个普通的鼠标点击事件。
注意在窗口部件得到mouseDoubleClickEvent()之前,它得到一个mousePressEvent()和一个mouseReleaseEvent()。
也可以参考mousePressEvent()、mouseReleaseEvent()、 mouseMoveEvent()、event()和QMouseEvent。
如果这个应用程序中当前没有捕获鼠标的窗口部件,0被返回。
也可以参考grabMouse()和keyboardGrabber()。
如果鼠标跟踪被切换为关闭,只有在鼠标被按下后移动的情况下,才会发生鼠标移动事件。如果鼠标跟踪被切换为开,即使鼠标没有被按下,只要移动就会发生鼠标移动事件。
QMouseEvent::pos()报告鼠标光标相对于这个窗口部件的位置。对于按下和释放事件,这个位置通常和最后一次鼠标移动事件的位置相同,但是如果鼠标非常快地移动和按下,这也许是不同的。这依赖于底层的窗口系统,而不是Qt。
也可以参考mouseTracking、mousePressEvent()、 mouseReleaseEvent()、mouseDoubleClickEvent()、event()和QMouseEvent。
实例:aclock/aclock.cpp、drawlines/connect.cpp、iconview/simple_dd/main.cpp、life/life.cpp、popup/popup.cpp、qmag/qmag.cpp和scribble/scribble.cpp。
在QSizeGrip中被重新实现。
如果你在mousePressEvent()中创建新的窗口部件,mouseReleaseEvent()也许不会像你所期待的那样结束,这依赖于底层的窗口系统(或X11窗口管理器)、这个窗口部件的位置并且也许更多。
当你再窗口外点击时,默认实现是关闭弹出窗口。对于其它窗口部件类型,它什么都不做。
也可以参考mouseReleaseEvent()、mouseDoubleClickEvent()、mouseMoveEvent()、event()和QMouseEvent。
实例:biff/biff.cpp、drawlines/connect.cpp、iconview/simple_dd/main.cpp, life/life.cpp, qmag/qmag.cpp、scribble/scribble.cpp和tooltip/tooltip.cpp。
在QSizeGrip中被重新实现。
也可以参考mouseDoubleClickEvent()、mouseMoveEvent()、event()和QMouseEvent。
实例:drawlines/connect.cpp、hello/hello.cpp、popup/popup.cpp、qmag/qmag.cpp、scribble/scribble.cpp、showimg/showimg.cpp和t14/cannon.cpp。
设置窗口部件在它的父窗口部件中的位置。详细情况请参考“pos”属性。
旧的位置可以通过QMoveEvent::oldPos()来访问。
也可以参考resizeEvent()、event()、pos和QMoveEvent。
如果这个窗口部件使用它自己的光标,返回真,否则返回假。详细情况请参考“ownCursor”属性。
如果这个窗口部件使用它自己的字体,返回真,否则返回假。详细情况请参考“ownFont”属性。
如果这个窗口部件使用它自己的调色板,返回真,否则返回假。详细情况请参考“ownPalette”属性。
绘制事件就是重新绘制这个窗口部件的所有部分的一个请求。它可以是repaint()或update()的结果,或者因为这个窗口部件原来被变暗并且现在已经不再被覆盖了,或者其它很多原因。
很多窗口部件在当它们被请求时,它们很简单地重新绘制整个界面,但是一些比较慢的窗口部件需要通过仅仅绘制被请求的区域QPaintEvent::region()进行优化。这个速度优化不会改变结果,在事件处理过程中,绘制仅仅发生在被改变的区域中。例如,QListView和QCanvas就是这样做的。
Qt也试图通过把多个绘制事件合并为一个来加快绘制速度。当update()被调用几次或者窗口系统发送几次绘制事件,Qt把它们合并为一个比较大区域(请参考QRegion::unite())的一个事件中。repaint()不允许这样优化,所以只要可能我们建议使用update()。
当绘制事件发生,更新区域通常被擦除,所以你正在这个窗口部件的背景上绘制。这里有一些例外并且QPaintEvent::erased()告诉你这个窗口部件是否被擦除。
背景可以通过使用setBackgroundMode()、setPaletteBackgroundColor()或setBackgroundPixmap()来设置。setBackgroundMode()的文档详细描述了背景,我们建议你去读一下。
也可以参考event()、repaint()、update()、QPainter、QPixmap和QPaintEvent。
实例:drawdemo/drawdemo.cpp、drawlines/connect.cpp、qmag/qmag.cpp、scribble/scribble.cpp、splitter/splitter.cpp、t8/cannon.cpp和t9/cannon.cpp。
在QButton、QFrame、QGLWidget、QSizeGrip、QStatusBar和QTabBar中被重新实现。
返回这个窗口部件的调色板。详细情况请参考“palette”属性。
返回这个窗口部件的背景色。详细情况请参考“paletteBackgroundColor”属性。
返回这个窗口部件的背景像素映射。详细情况请参考“paletteBackgroundPixmap”属性。
这个虚函数是从setPalette()中被调用的。oldPalette是原来的调色板,你可以通过palette()得到新的调色板。
如果你的窗口部件需要知道什么时候调色板发生变化了,请重新实现这个函数。
返回这个窗口部件的前景色。详细情况请参考“paletteForegroundColor”属性。
返回这个窗口部件的父窗口部件的指针,如果它没有,就返回零指针。如果sameWindow为真并且这个窗口部件是顶级的,就返回0,否则返回它的父窗口部件。
这个函数将在窗口部件完全创建完毕之后并且在它每一次被显示之前被调用。
抛光对于依赖一个特定窗口部件的最终初始化是很有用的。有一些事情构造函数不能够决定,因为子类的初始化也许没有完成。
在这个函数之后,窗口部件就有一个适当的字体和调色板并且QApplication::polish()已经被调用。
当重新实现这个函数的时候,记得调用QWidget的实现。
也可以参考constPolish()和QApplication::polish()。
实例:menu/menu.cpp。
返回这个窗口部件在它父窗口部件中的位置。详细情况请参考“pos”属性。
在你重新实现的这个函数中,如果你想停止Qt对这个事件的处理,返回真。如果你返回假,这个本地事件被回传给Qt,它会把这个事件转换为一个Qt事件并且把它发送给这个窗口部件。
警告:这个函数是不可以移植的。
也可以参考QApplication::qwsEventFilter()。
如果在屏幕上有与这个窗口部件重叠的兄弟,这个窗口部件将在它后来的这些兄弟之前变的可视了。
也可以参考lower()和stackUnder()。
这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
这个函数的提供是为了从Qt 1.0移植到2.0。在Qt 2.0中它已经被重新命名为reparent()。
返回不包含任何窗口框架的窗口部件的内部几何形状。详细情况请参考“rect”属性。
也可以参考grabKeyboard()、grabMouse()和releaseMouse()。
也可以参考grabMouse()、grabKeyboard()和releaseKeyboard()。
如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h)。
如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换。
如果你需要立即重新绘制,我们建议使用repaint(),比如在动画期间。在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪烁。
警告:如果你在一个函数中调用repaint(),而它自己又被paintEvent()调用,你也许会看到无线循环。update()函数从来不会产生循环。
也可以参考update()、paintEvent()、updatesEnabled和erase()。
这个版本擦除并且重新绘制整个窗口部件。
这个版本重新绘制整个窗口部件。
通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。
如果erase为真,擦除窗口部件区域r。
通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。
如果erase为真,擦除窗口部件区域reg。
如果你需要立即重新绘制,我们建议使用repaint(),比如在动画期间。一连串的多次调用update()将产生一个单一的绘制事件。
警告:如果你在一个函数中调用repaint(),而它自己又被paintEvent()调用,你也许会看到无线循环。update()函数从来不会产生循环。
也可以参考update()、paintEvent()、updatesEnabled和erase()。
如果showIt为真,一旦窗口部件被重新定义父对象,show()就被调用。
如果新的父窗口部件在一个不同的顶级窗口部件中,被重新定义父对象的窗口部件和它的孩子们将被添加到新窗口部件的tab链的最后。如果被移动的窗口部件之一拥有键盘焦点,reparent()为这个窗口部件调用clearFocus()。
如果新的父窗口部件和原来的父对象在同一个顶级窗口部件中,reparent()不会改变tab顺序或者键盘焦点。
警告:你对这个函数的需要是绝对不必要的。如果你有一个窗口部件动态的改变它的内容,使用QWidgetStack或QWizard会更容易的多。
也可以参考getWFlags()。
一个方便的重新定义这个窗口部件的父对象的版本没有把窗口部件标记作为参数。
调用reparent(parent, getWFlags() & ~WType_Mask, p, showIt)。
设置不包含任何窗口框架的窗口部件的大小。详细情况请参考“size”属性。
这个窗口部件竟被擦除并且在处理重定义大小事件之后立即接收到一个绘制事件。在这个处理器中不需要(或者必须)绘制。
由WResizeNoErase创建的窗口部件将不会被擦除。不过,它们也将收到一个对于整个区域的绘制事件。再一次的,在这个处理器中不需要(或者必须)绘制。
如果窗口部件的自动面具生效,默认实现调用updateMask()。
也可以参考moveEvent()、event()、size、QResizeEvent和paintEvent()。
实例:drawdemo/drawdemo.cpp、mainlyQt/editor.cpp、mainlyXt/editor.cpp 、menu/menu.cpp、qmag/qmag.cpp、scribble/scribble.cpp和tooltip/tooltip.cpp。
在卷动后,scroll()发送绘制事件,只为了读的部分,但不写。例如,当向右卷动10像素,窗口部件的最左面10像素需要重新绘制。绘制事件也许立即或者稍后被交付,依赖于一些启发式。
也可以参考QScrollView、erase()和bitBlt()。
这个版本仅卷动r并且不移动窗口部件的孩子。
如果r为空或者无效,结果是未定义的。
也可以参考QScrollView、erase()和bitBlt()。
设置对于这个窗口部件放下事件是否生效为on。详细情况请参考“acceptDrops”属性。
激活窗口就是拥有键盘输入焦点的可视的顶级窗口。
这个函数执行的操作和在一个顶级窗口的标题栏点击鼠标是一样的。在X11上,结果依赖于窗口管理器。如果你想确认窗口也被堆在顶部,请另外调用raise()。注意这个窗口已经被变为可视,除非setActiveWindow()没有效果。
在Windows上,如果当应用程序不是当前激活的应用程序,如果你调用这个函数,然后它不会使它变为激活窗口。它将会在标题栏条目上闪烁蓝色标明这个窗口已经做了些什么。这是由于Microsoft不允许一个应用程序打断用户当前在另一个应用程序上所做的事情。
也可以参考isActiveWindow、topLevelWidget()和show()。
在QXtWidget中被重新实现。
设置这个窗口部件自动面具特征是否生效。详细情况请参考“autoMask”属性。
实例:customlayout/main.cpp、desktop/desktop.cpp、hello/main.cpp、movies/main.cpp和splitter/splitter.cpp。
设置绘制窗口部件背景所使用的颜色模式。详细情况请参考“backgroundMode”属性。
设置这个窗口部件自己的背景模式为m并且可视背景模式为visual。可视背景模式和可设计的属性backgroundColor、foregroundColor和backgroundPixmap一起使用。
对于复杂的控制,合理的背景模式有时和窗口部件自己的背景模式不同。例如,微调框把PaletteBackground作为背景模式(通常是暗灰色),当它被嵌入到行编辑控件中使用PaletteBase(通常是白色)。因为行编辑控件覆盖微调框的绝大部分可视区域,它定义了PaletteBase为它的可视背景模式。改变backgroundColor属性会改变行编辑控件的背景,这正是用户在Qt设计器中所期待的。
设置这个窗口部件背景的原点。详细情况请参考“backgroundOrigin”属性。
设置这个窗口部件的基础大小。详细情况请参考“baseSize”属性。
这个和setBaseSize( QSize(basew, baseh) )一致。设置窗口部件基础大小的宽为basew,高为baseh。
设置窗口标题。详细情况请参考“caption”属性。
设置这个窗口部件的光标形状。详细情况请参考“cursor”属性。
更多信息请参考enabled文档。
也可以参考isEnabledTo()、QKeyEvent、QMouseEvent和enabledChange()。
设置这个窗口部件是否生效。详细情况请参考“enabled”属性。
擦除颜色就是在paintEvent()被调用之前这个窗口部件被清空的颜色。如果有擦除像素映射(使用setErasePixmap()设置),然后这个属性就会有不确定的值。
也可以参考erasePixmap()、backgroundColor()、backgroundMode和palette。
这个像素映射就是在paintEvent()被调用之前用来清空这个窗口部件的。
也可以参考sizeHint、minimumSize、maximumSize和setFixedSize()。
实例:fonts/simple-qfont-demo/viewer.cpp、layout/layout.cpp、qdir/qdir.cpp和showimg/showimg.cpp。
也可以参考maximumSize和minimumSize。
设置窗口部件的宽度为w,高度为h。
也可以参考sizeHint、minimumSize、maximumSize和setFixedSize()。
实例:network/ftpclient/ftpmainwindow.cpp、progressbar/progressbar.cpp和qdir/qdir.cpp。
首先,一个焦点移出事件会被发送给焦点窗口部件(如果有的话)告诉它关于失去焦点的事情。然后一个焦点进入事件被发送给这个窗口部件告诉它刚刚接收到焦点。(如果焦点移出和进入的窗口部件是同一个的话,就什么都没有发生。)
setFocus()会把焦点给一个窗口部件,而不管它的焦点策略,但是不会清空任何键盘捕获(请参考grabKeyboard())。
请注意如果窗口部件是被隐藏的,它将不接收焦点。
警告:如果你在一个函数中调用setFocus(),而这个函数自己被focusOutEvent()或focusInEvent()调用,你也许会体验到无限循环。
也可以参考focus、clearFocus()、focusInEvent()、focusOutEvent()、focusPolicy、QApplication::focusWidget()、grabKeyboard()和grabMouse()。
实例:addressbook/centralwidget.cpp、lineedits/lineedits.cpp、mdi/application.cpp、popup/popup.cpp、rot13/rot13.cpp、t8/main.cpp和wizard/wizard.cpp。