主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QWidget类参考

QWidget类是所有用户界面对象的基类。 详情请见……

#include <qwidget.h>

继承QObjectQPaintDevice

QButtonQFrameQDialogQComboBoxQDataBrowserQDataViewQDateTimeEditQDesktopWidgetQDialQDockAreaQGLWidgetQHeaderQMainWindowQNPWidgetQScrollBarQSizeGripQSliderQSpinBoxQStatusBarQTabBarQTabWidgetQWorkspaceQXtWidget继承。

所有成员函数的列表。

公有成员

公有槽

静态公有成员

属性

保护成员


详细描述

QWidget类是所有用户界面对象的基类。

窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QDialog是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。

一个没有父窗口部件的窗口部件一直是顶级窗口部件。

非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的。(当然把一个按钮作为或者叫做顶级窗口部件也是可能的,但绝大多数人喜欢把他们的按钮放到其它按钮当中,比如QDialog。)

QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPushButtonQListBoxQTabDialog等等。

函数分组:

上下文 函数
窗口函数 show()、hide()、raise()、lower()、close()。
顶级窗口 caption()、setCaption()、icon()、setIcon()、iconText()、setIconText()、isActiveWindow()、setActiveWindow()、showMinimized()、showMaximized()、showFullScreen()、showNormal()。
窗口内容 update()、repaint()、erase()、scroll()、updateMask()。
几何形状 pos()、size()、rect()、x()、y()、width()、height()、sizePolicy()、setSizePolicy()、sizeHint()、updateGeometry()、layout()、move()、resize()、setGeometry()、frameGeometry()、geometry()、childrenRect()、adjustSize()、mapFromGlobal()、mapFromParent()、mapToGlobal()、mapToParent()、maximumSize()、minimumSize()、sizeIncrement()、setMaximumSize()、setMinimumSize()、setSizeIncrement()、setBaseSize()、setFixedSize()。
模式 isVisible()、isVisibleTo()、visibleRect()、isMinimized()、isDesktop()、isEnabled()、isEnabledTo()、isModal()、isPopup()、isTopLevel()、setEnabled()、hasMouseTracking()、setMouseTracking()、isUpdatesEnabled()、setUpdatesEnabled()。
观感 style()、setStyle()、cursor()、setCursor()、font()、setFont()、palette()、setPalette()、backgroundMode()、setBackgroundMode()、colorGroup()、fontMetrics()、fontInfo()。
键盘焦点函数 isFocusEnabled()、setFocusPolicy()、focusPolicy()、hasFocus()、setFocus()、clearFocus()、setTabOrder()、setFocusProxy()。
鼠标和键盘捕获 grabMouse()、releaseMouse()、grabKeyboard()、releaseKeyboard()、mouseGrabber()、keyboardGrabber()。
事件处理器 event()、mousePressEvent()、mouseReleaseEvent()、mouseDoubleClickEvent()、mouseMoveEvent()、keyPressEvent()、keyReleaseEvent()、focusInEvent()、focusOutEvent()、wheelEvent()、enterEvent()、leaveEvent()、paintEvent()、moveEvent()、resizeEvent()、closeEvent()、dragEnterEvent()、dragMoveEvent()、dragLeaveEvent()、dropEvent()、childEvent()、showEvent()、hideEvent()、customEvent()。
变化处理器 enabledChange()、fontChange()、paletteChange()、styleChange()、windowActivationChange()。
系统函数 parentWidget()、topLevelWidget()、reparent()、polish()、winId()、find()、metric()。
这是什么的帮助 customWhatsThis()。
内部核心函数 focusNextPrevChild()、wmapper()、clearWFlags()、getWFlags()、setWFlags()、testWFlags()。

每一个窗口部件构造函数接受两个或三个标准参数:

  1. QWidget *parent = 0是新窗口部件的父窗口部件。如果为0(默认),新的窗口部件将是一个顶级窗口部件。如果不是,它将会使parent的一个孩子,并且被parent的几何形状所强迫(除非你指定WType_TopLevel作为窗口部件标记)。
  2. const char *name = 0是新窗口部件的窗口部件名称。你可以使用name()来访问它。窗口部件名称很少被程序员用到,但是对于图形用户界面构造程序,比如Qt设计器,是相当重要的(你可以在Qt设计器中命名一个窗口部件,并且在你的代码中使用这个名字来连接它)。dumpObjectTree()调试函数也使用它。
  3. WFlags f = 0(在可用的情况下)设置窗口部件标记,默认设置对于几乎所有窗口部件都是适用的,但是,举例来说,一个没有窗口系统框架的顶级窗口部件,你必须使用特定的标记。

tictac/tictac.cpp实例程序是一个简单窗口部件的好实例。它包含了一些的事件处理器(就像所有窗口部件所必须的那样)、一些被指定给它的定制处理(就像所有有用的窗口部件做的那样)并且还有一些孩子和联机。它所做的每一件事都响应对应的一个事件:这是到目前为止设计图形用户界面的最普通的方式。

你自己将需要为你的窗口部件提供内容,但是这里是一些简要的运行事件,从最普通的开始:

如果你的窗口部件仅仅包含子窗口部件,你也许不需要实现任何一个事件处理器。如果你想检测在子窗口部件中的鼠标点击,请在父窗口部件的mousePressEvent()中调用子窗口部件的hasMouse()函数。

接收键盘的窗口部件需要重新实现一些更多的事件处理器:

一些窗口部件也许需要实现一些不太普通的事件处理器:

这里还有一些不太明显的事件。它们在qevent.h中被列出并且你需要重新实现event()来处理它们。event()的默认实现处理Tab和Shift+Tab(移动键盘焦点)并且其它绝大多数事件给上面提到的一个或更多的特定处理器。

当实现一个窗口部件时,还有一些更多的事情要考虑。

也可以参考QEventQPainterQGridLayoutQBoxLayout抽象窗口部件类


成员类型文档

QWidget::BackgroundOrigin

这个枚举变量定义了用于绘制窗口部件背景像素映射的原点。

被绘制的像素映射使用:

QWidget::FocusPolicy

这个枚举变量定义了一个窗口部件获得键盘焦点所依据的不同策略。

policy可以是:


成员函数文档

QWidget::QWidget ( QWidget * parent = 0, const char * name = 0, WFlags f = 0 )

构造一个是parent的孩子、名称为name并且窗口部件标记为f的窗口部件。

如果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 );
    

QWidget::~QWidget ()

销毁这个窗口部件。

首先这个窗口部件的孩子都被删除。如果这个窗口部件是主窗口部件,应用程序退出。

bool QWidget::acceptDrops () const

如果对于这个窗口部件放下事件生效,返回真,否则返回假。详细情况请参考“acceptDrops”属性。

void QWidget::adjustSize () [虚]

调整窗口部件的大小来适合它的内容。

如果sizeHint()有效(比如,如果大小提示的宽和高都大于等于0)就是用它,否则设置大小为子对象所占用的矩形(所有子窗口部件几何形状的合集)。

也可以参考sizeHintchildrenRect

实例:xform/xform.cpp

QMessageBox中被重新实现。

bool QWidget::autoMask () const

如果对于这个窗口部件自动面具特征生效,返回真,否则返回假。详细情况请参考“autoMask”属性。

const QBrush & QWidget::backgroundBrush () const

返回这个窗口部件的背景画刷。详细情况请参考“backgroundBrush”属性。

const QColor & QWidget::backgroundColor () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

作为替代请使用paletteBackgroundColor()或eraseColor()。

BackgroundMode QWidget::backgroundMode () const

返回绘制窗口部件的背景所使用的颜色功能。详细情况请参考“backgroundMode”属性。

BackgroundOrigin QWidget::backgroundOrigin () const

返回窗口部件的背景的原点。详细情况请参考“backgroundOrigin”属性。

const QPixmap * QWidget::backgroundPixmap () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

作为替代请使用paletteBackgroundPixmap()或者erasePixmap()。

实例:themes/metal.cppthemes/wood.cpp

QSize QWidget::baseSize () const

返回窗口部件的继承大小。详细情况请参考“baseSize”属性。

QString QWidget::caption () const

返回窗口标题。详细情况请参考“caption”属性。

QWidget * QWidget::childAt ( int x, int y, bool includeThis = FALSE ) const

返回在窗口部件自己的坐标系统中像素位置(x, y)处的可视的子窗口部件。

如果includeThis为真,并且在(x, y)没有可视的孩子,那么这个窗口部件本身被返回。

QWidget * QWidget::childAt ( const QPoint & p, bool includeThis = FALSE ) const

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

返回在窗口部件自己的坐标系统中点p处的可视的子窗口部件。

如果includeThis为真,并且在p没有可视的孩子,那么这个窗口部件本身被返回。

QRect QWidget::childrenRect () const

返回这个窗口部件的孩子的边界矩形。详细情况请参考“childrenRect”属性。

QRegion QWidget::childrenRegion () const

返回这个窗口部件的孩子所占用的组合区域。详细情况请参考“childrenRegion”属性。

void QWidget::clearFocus () [槽]

从窗口部件中拿走键盘输入焦点。

如果这个窗口部件有激活的焦点,焦点移出事件被发送给这个窗口部件告诉它关于它失去了焦点。

这个窗口部件必须已经为了获得键盘输入焦点使焦点设置生效,比如,它必须调用setFocusPolicy()。

也可以参考focussetFocus()、focusInEvent()、focusOutEvent()、focusPolicyQApplication::focusWidget()。

void QWidget::clearMask ()

通过setMask()移除任何面具设置。

也可以参考setMask()。

void QWidget::clearWFlags ( WFlags f ) [保护]

清空窗口部件标记f

窗口部件标记是Qt::WidgetFlags的组合。

也可以参考testWFlags()、getWFlags()和setWFlags()。

bool QWidget::close () [槽]

关闭这个窗口部件。如果窗口部件被关闭,返回真,否则返回假。

首先它发送给这个窗口部件一个QCloseEvent。如果它接收这个关闭事件,它就被隐藏了QWidget::closeEvent()的默认实现是接收这个关闭事件。

当最后一个可视的顶级窗口部件被关闭,QApplication::lastWindowClosed()信号被发射。

实例:mdi/application.cpppopup/popup.cpp

bool QWidget::close ( bool alsoDelete ) [虚]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

关闭这个窗口部件。如果窗口部件被关闭,返回真,否则返回假。

如果alsoDelete为真或者这个窗口部件有WDestructiveClose窗口部件标记,这个窗口部件也被删除。这个窗口部件自己可以通过抵制它所收到的QCloseEvent来防止被关闭。

当最后一个可视的顶级窗口部件被关闭,QApplication::lastWindowClosed()信号被发射。

注意关闭QApplication::mainWidget()会终止应用程序。

也可以参考closeEvent()、QCloseEventhide()、QApplication::quit()、QApplication::setMainWidget()和QApplication::lastWindowClosed()。

void QWidget::closeEvent ( QCloseEvent * e ) [虚 保护]

这个对于事件e的事件处理器可以在子类中被重新实现来接收窗口部件关闭事件。

默认实现是调用e->accept(),它隐藏这个窗口部件。详细情况请参考QCloseEvent文档。

也可以参考event()、hide(), close()和QCloseEvent

实例:action/application.cppapplication/application.cppi18n/mywidget.cpppopup/popup.cppqwerty/qwerty.cpp

const QColorGroup & QWidget::colorGroup () const

返回这个窗口部件调色板的当前颜色组。详细情况请参考“colorGroup”属性。

void QWidget::constPolish () const [槽]

确认这个窗口部件通过调用polish()被适当地初始化了。

从像sizeHint()这样依赖于这个窗口部件被初始化的函数中调用constPolish(),并且也可以在show()之前被调用。

警告:不要在窗口部件的构造函数中调用constPolish()。

也可以参考polish()。

void QWidget::contextMenuEvent ( QContextMenuEvent * e ) [虚 保护]

这个对于事件e的事件处理器可以在子类中被重新实现来接收窗口部件上下文菜单事件。

默认实现是调用e->accept(),它拒绝这个上下文事件。详细情况请参考QContextMenuEvent文档。

也可以参考event()和QContextMenuEvent

void QWidget::create ( WId window = 0, bool initializeWindow = TRUE, bool destroyOldWindow = TRUE ) [虚 保护]

如果window为零,创一个新的窗口部件窗口,否则设置窗口部件参考为window

如果initializeWindow为真,初始化窗口(设置几何形状等等)。如果initializeWindow为假,没有初始化被执行。这个参数只有在window是有效窗口时才有效。

如果destroyOldWindow为真,销毁就的窗口。如果destroyOldWindow为假,你有责任自己销毁这个窗口(使用平台本地代码)。

QWidget构造函数调用create(0,TRUE,TRUE)来为这个窗口部件创建窗口。

const QCursor & QWidget::cursor () const

返回这个窗口部件的光标外形。详细情况请参考“cursor”属性。

bool QWidget::customWhatsThis () const [虚]

如果这个窗口部件想手工地处理这是什么的帮助,返回真,否则返回假。详细情况请参考“customWhatsThis”属性。

void QWidget::destroy ( bool destroyWindow = TRUE, bool destroySubWindows = TRUE ) [虚 保护]

释放窗口系统资源。如果destroyWindow为真,销毁这个窗口部件窗口。

对于所有的子窗口部件,destroy()循环地调用自己,传递给destroySubWindows一个destroyWindow参数。为了对子窗口部件地销毁进行控制,首先有选择地销毁子窗口部件。

这个函数通常被QWidget析构函数调用。

void QWidget::dragEnterEvent ( QDragEnterEvent * ) [虚 保护]

当一个拖动正在进行并且鼠标进入这个窗口部件,这个事件处理器被调用。

对于在你的应用程序中如何提供拖放的概述请参考拖放文档

也可以参考QTextDragQImageDragQDragEnterEvent

实例:iconview/simple_dd/main.cpp

void QWidget::dragLeaveEvent ( QDragLeaveEvent * ) [虚 保护]

当一个拖动正在进行并且鼠标离开这个窗口部件,这个事件处理器被调用。

对于在你的应用程序中如何提供拖放的概述请参考拖放文档

也可以参考QTextDragQImageDragQDragLeaveEvent

void QWidget::dragMoveEvent ( QDragMoveEvent * ) [虚 保护]

当一个拖动正在进行并且鼠标进入这个窗口部件,并且只要它在这个窗口部件中移动,这个事件处理器被调用。

对于在你的应用程序中如何提供拖放的概述请参考拖放文档

也可以参考QTextDragQImageDragQDragMoveEvent

void QWidget::drawText ( int x, int y, const QString & str )

在位置(x, y)绘制字符串str

y位置是文本的基线位置。使用默认字体和默认前景色绘制文本。

这个函数的提供是为了方便。你使用painter替代它一般将会获得更灵活的结果和更快的速度。

也可以参考fontforegroundColor()和QPainter::drawText()。

void QWidget::drawText ( const QPoint & pos, const QString & str )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

在位置pos绘制字符串str

void QWidget::dropEvent ( QDropEvent * ) [虚 保护]

当拖动在这个窗口部件上被放下,这个事件处理器被调用。

对于在你的应用程序中如何提供拖放的概述请参考拖放文档

也可以参考QTextDragQImageDragQDropEvent

实例:iconview/simple_dd/main.cpp

void QWidget::enabledChange ( bool oldEnabled ) [虚 保护]

isEnabled(). 这个虚函数被setEnabled()调用。oldEnabled是以前的设置,你可以从isEnabled()中得到新的设置。

如果你的窗口部件需要知道什么时候它变为有效或无效,请重新实现这个函数。你将几乎必然要使用update()来更新这个窗口部件。

默认实现是重新绘制窗口部件的可见部分。

也可以参考enabledenabledrepaint()、update()和visibleRect

void QWidget::enterEvent ( QEvent * ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收窗口部件进入事件。

当鼠标光标进入窗口部件,这个事件被发送给窗口部件。

也可以参考leaveEvent()、mouseMoveEvent()和event()。

void QWidget::erase ( int x, int y, int w, int h )

在窗口部件中擦除指定区域(x, y, w, h),并不产生绘制事件

如果w为负数,它被width()-x替换。如果h为负数,它被height()-y替换。

子窗口部件不被影响。

也可以参考repaint()。

void QWidget::erase ()

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

这个版本擦除整个窗口部件。

void QWidget::erase ( const QRect & r )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

在窗口部件中擦除指定区域r,并不产生绘制事件

void QWidget::erase ( const QRegion & reg )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

在窗口部件中擦除reg定义的区域,并不产生绘制事件

子窗口部件不被影响。

const QColor & QWidget::eraseColor () const

返回这个窗口部件的擦除色。

也可以参考setEraseColor()、setErasePixmap()和backgroundColor()。

const QPixmap * QWidget::erasePixmap () const

返回这个窗口部件的擦除像素映射。

也可以参考setErasePixmap()和eraseColor()。

bool QWidget::event ( QEvent * e ) [虚 保护]

这是主事件处理器,它处理事件e。你可以在子类中被重新实现整个函数,但是我们建议你使用一个特定的事件处理器来替代它。

主事件首先把事件传递给所有已经被安装的事件过滤器。如果没有过滤器中途截取这个事件,它调用一个特定的事件处理器。

键按下和释放事件被处理得和其它事件不同。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中被重新实现。

QWidget * QWidget::find ( WId id ) [静态]

返回窗口标识符/句柄为id的窗口部件指针。

窗口标识符类型依赖于底下的窗口系统,实际定义请参考qwindowdefs.h。如果没有具有这样的标识符的窗口部件,0被返回。

QFocusData * QWidget::focusData () [保护]

返回这个窗口部件的顶级窗口部件的焦点数据的指针。

焦点数据总是属于顶级窗口部件。焦点数据列表包含这个可以接收焦点的顶级窗口部件中所有的窗口部件,按Tab顺序。一个迭代器指向当前焦点窗口部件(focusWidget()返回这个窗口部件的指针)。

这个信息对于重新实现更先进版本的focusNextPrevChild()很有用。

void QWidget::focusInEvent ( QFocusEvent * ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收这个窗口部件的键盘焦点事件(焦点进入)。

一个窗口部件通常必须使用setFocusPolicy()来接收焦点事件,除了NoFocus的。(注意应用程序的程序员可以在任何一个窗口部件中调用setFocus(),即使是那些通常不接收焦点的。)

如果它接收了焦点,默认实现是更新这个窗口部件(请参考focusPolicy())。它也调用setMicroFocusHint(),提示任何系统指定的输入工具关于用户注意的焦点。

也可以参考focusOutEvent(), focusPolicykeyPressEvent()、keyReleaseEvent()、event()和QFocusEvent

QtMultiLineEdit中被重新实现。

bool QWidget::focusNextPrevChild ( bool next ) [虚 保护]

找到一个新的窗口部件并且把键盘焦点给它,适用于Tab和Shift+Tab,并且如果它能找到新的窗口部件就返回真,并且如果不能就返回假。

如果next为真,这个函数就“向前”搜索,如果next为假,它就“向后”搜索。

有时,你想重新实现这个函数。例如,一个网页浏览器也许会重新实现它用来向前或向后移动“当前激活链接”,并且只有到达“页面”的最后一个或第一个链接时调用QWidget::focusNextPrevChild()。

子窗口部件在它们的父窗口部件上调用focusNextPrevChild(),但是只有顶级窗口部件可以重定向焦点。通过重载一个对象中的这个方法,你可以获得能够遍历所有子窗口部件的焦点控制。

也可以参考focusData()。

void QWidget::focusOutEvent ( QFocusEvent * ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收这个窗口部件的键盘焦点事件(焦点丢失)。

一个窗口部件通常必须使用setFocusPolicy()来接收焦点事件,除了NoFocus的。(注意应用程序的程序员可以在任何一个窗口部件中调用setFocus(),即使是那些通常不接收焦点的。)

默认实现是调用repaint(),因为窗口部件的colorGroup()从激活变为通常,所以这个窗口部件也许需要重新绘制。它也调用setMicroFocusHint(),提示任何系统指定的输入工具关于用户注意的焦点。

也可以参考focusInEvent()、focusPolicykeyPressEvent()、keyReleaseEvent()、event()和QFocusEvent.

实例:qmag/qmag.cpp

FocusPolicy QWidget::focusPolicy () const

返回窗口部件接收键盘焦点的方式。详细情况请参考“focusPolicy”属性。

QWidget * QWidget::focusProxy () const

返回焦点代理的指针,或者如果没有焦点代理就返回0。

也可以参考setFocusProxy()。

QWidget * QWidget::focusWidget () const

返回这个窗口部件窗口中的焦点窗口部件。这个和QApplication::focusWidget()是不一样的,后者返回当前激活窗口中的焦点窗口部件。

QFont QWidget::font () const

返回这个窗口部件的字体当前设置。详细情况请参考“font”属性。

void QWidget::fontChange ( const QFont & oldFont ) [虚 保护]

这个虚函数是从setFont()中被调用的。oldFont是以前的字体,你可以通过font()获得新的字体。

如果你的窗口部件需要直到什么时候它的字体改变了,就重新实现这个函数。你将几乎毫无疑问的需要使用update()更新这个窗口部件。

默认实现是更新包括它的几何形状的窗口部件。

也可以参考fontfontupdate()和updateGeometry()。

QFontInfo QWidget::fontInfo () const

返回这个窗口部件当前字体的字体信息。等于QFontInto(widget->font())。

也可以参考fontfontMetrics()和font

QFontMetrics QWidget::fontMetrics () const

返回这个窗口部件的当前字体的字体规格。等于 QFontMetrics(widget->font())。

也可以参考fontfontInfo()和font

实例:drawdemo/drawdemo.cppqmag/qmag.cpp

const QColor & QWidget::foregroundColor () const

paletteForegroundColor()相同。

QRect QWidget::frameGeometry () const

返回相对于它的父对象包含任何窗口框架的窗口部件的几何形状。详细情况请参考“frameGeometry”属性。

QSize QWidget::frameSize () const

返回包含任何窗口框架的窗口部件的大小。详细情况请参考“frameSize”属性。

const QRect & QWidget::geometry () const

返回相对于它的父对象不包括窗口框架的窗口部件的几何形状。详细情况请参考“geometry”属性。

WFlags QWidget::getWFlags () const [保护]

返回这个窗口部件的窗口部件标记。

窗口部件就是Qt::WidgetFlags的一个组合。

也可以参考testWFlags(), setWFlags()和clearWFlags()。

void QWidget::grabKeyboard ()

捕获键盘输入。

这个窗口部件接收所有的键盘事件并且其它窗口部件将不会得到直到releaseKeyboard()被调用。鼠标事件不受影响。如果你想捕获鼠标事件,请使用grabMouse()。

焦点窗口部件不受影响,除非它不接收任何键盘事件。setFocus()像平常那样移动焦点,但是只有在releaseKeyboard()被调用之后,新的焦点窗口部件才能接收键盘事件。

如果一个不同的窗口部件当前正在捕获键盘焦点,那么那个窗口部件的捕获首先被释放。

也可以参考releaseKeyboard()、grabMouse()、releaseMouse()和focusWidget()。

void QWidget::grabMouse ()

捕获鼠标输入。

这个窗口部件接收所有的鼠标事件并且其它窗口部件将不会得到直到releaseMouse()被调用。键盘事件不受影响。如果你想捕获键盘事件,请使用grabKeyboard()。

警告:捕获鼠标的应用程序的bug经常会锁定终端。请特别仔细地使用这个函数,并且在调试的时候考虑使用-nograb命令行参数。

在使用Qt的时候,几乎不需要捕获鼠标,因为Qt非常聪明地捕获它、释放它。在特殊情况下,当鼠标按键被按下并且保持这种状态直到最后一个按键被释放时,Qt捕获鼠标。

注意只有可视的窗口部件可以捕获鼠标输入。如果一个窗口部件的isVisible()返回假,这个窗口部件不能调用grabMouse()。

也可以参考releaseMouse()、grabKeyboard()、releaseKeyboard()、grabKeyboard()和focusWidget()。

void QWidget::grabMouse ( const QCursor & cursor )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

捕获鼠标输入并且改变光标形状。

光标将被赋值为形状cursor(只要在鼠标焦点被捕获)并且这个窗口部件将变为唯一接收鼠标事件的窗口部件直到releaseMouse()被调用。

警告:不过鼠标也许会锁定终端。

也可以参考releaseMouse()、grabKeyboard()、releaseKeyboard()和cursor

bool QWidget::hasFocus () const

如果这个窗口部件(或者它的焦点代理)拥有键盘输入焦点,返回真,否则返回假。详细情况请参考“focus”属性。

bool QWidget::hasMouse () const

如果窗口部件在鼠标光标之下,返回真,否则返回假。详细情况请参考“underMouse”属性。

bool QWidget::hasMouseTracking () const

如果这个窗口部件中鼠标跟踪生效,返回真,否则返回假。详细情况请参考“mouseTracking”属性。

int QWidget::height () const

返回不包括窗口框架的窗口部件的高度。详细情况请参考“height”属性。

int QWidget::heightForWidth ( int w ) const [虚]

返回对于给定宽度w这个窗口部件的最佳高度。默认实现是返回0,表明最佳高度不依赖于宽度。

警告:不要考虑窗口部件的布局。

QMenuBarQTextEdit中被重新实现。

void QWidget::hide () [虚 槽]

隐藏窗口部件。

你几乎不需要重新实现这个函数。如果你需要在一个窗口部件被隐藏之后做些什么,请使用hideEvent()替代。

也可以参考hideEvent()、hiddenshow()、showMinimized()、visibleclose()。

实例:mdi/application.cppnetwork/ftpclient/ftpmainwindow.cpppopup/popup.cppprogress/progress.cppscrollview/scrollview.cppxform/xform.cpp

QMenuBar中被重新实现。

void QWidget::hideEvent ( QHideEvent * ) [虚 保护]

这个事件处理器可以在子类中被重新实现来接收窗口部件隐藏事件。

在窗口部件被隐藏之后,隐藏事件被立即发送给窗口部件。

也可以参考event()和QHideEvent

QScrollBar中被重新实现。

const QPixmap * QWidget::icon () const

返回窗口部件图标像素映射。详细情况请参考“icon”属性。

QString QWidget::iconText () const

返回窗口部件图标文本。详细情况请参考“iconText”属性。

void QWidget::iconify () [槽]

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

void QWidget::imComposeEvent ( QIMEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收输入法写作事件。当用户通过输入法输入某些文本时,这个处理器将被调用。

默认实现是调用e->ignore(),它拒绝输入法事件。详细情况请参考QIMEvent文档。

也可以参考event()和QIMEvent

void QWidget::imEndEvent ( QIMEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收输入法写作事件。当用户已经完成通过输入法输入某些文本时,这个处理器将被调用。

默认实现是调用e->ignore(),它拒绝输入法事件。详细情况请参考QIMEvent文档。

也可以参考event()和QIMEvent

void QWidget::imStartEvent ( QIMEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收输入法写作事件。当用户开始通过输入法输入某些文本时,这个处理器将被调用。

默认实现是调用e->ignore(),它拒绝输入法事件。详细情况请参考QIMEvent文档。

也可以参考event()和QIMEvent

bool QWidget::isActiveWindow () const

如果这个窗口部件是激活窗口或者它的一个孩子,返回真,否则返回假。详细情况请参考“isActiveWindow”属性。

bool QWidget::isDesktop () const

如果这个窗口部件是一个桌面窗口部件,比如,它代表着桌面,返回真,否则返回假。详细情况请参考“isDesktop”属性。

bool QWidget::isDialog () const

如果这个窗口部件是一个对话框窗口部件,返回真,否则返回假。详细情况请参考“isDialog”属性。

bool QWidget::isEnabled () const

如果这个窗口部件是生效的,返回真,否则返回假。详细情况请参考“enabled”属性。

bool QWidget::isEnabledTo ( QWidget * ancestor ) const

如果ancestor生效,这个窗口部件能够变为生效的,返回真,否则返回假。

如果这个窗口部件自身或者它的每一个祖先,但是除了ancestor以外,已经被明确地指定为失效的时候,才是这样的情况。

isEnabledTo(0)等于isEnabled()。

也可以参考enabledenabled

bool QWidget::isEnabledToTLW () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

这个函数是被反对的。它等于isEnabled()。

bool QWidget::isFocusEnabled () const

如果这个窗口部件接收键盘焦点,返回真,否则返回假。详细情况请参考“focusEnabled”属性。

bool QWidget::isHidden () const

如果这个窗口部件被明确地隐藏,返回真,否则返回假。详细情况请参考“hidden”属性。

bool QWidget::isMaximized () const

如果窗口部件是被最大化的顶级窗口部件,返回真,否则返回假。

注意因为一些窗口系统的一些限制,这样做并不是总能得到所期望的结果(比如,如果在X11上的用户通过窗口管理器最大化这个窗口,Qt并不能把它与其它重定义大小区分开)。这有待于窗口管理器协议的进一步改进。

也可以参考showMaximized()。

bool QWidget::isMinimized () const

如果这个窗口部件最小化(变为图标了),返回真,否则返回假。详细情况请参考“minimized”属性。

bool QWidget::isModal () const

如果这个窗口部件是模式窗口部件,返回真,否则返回假。详细情况请参考“isModal”属性。

bool QWidget::isPopup () const

如果这个窗口部件是弹出窗口部件,返回真,否则返回假。详细情况请参考“isPopup”属性。

bool QWidget::isTopLevel () const

如果这个窗口部件是顶级窗口部件,返回真,否则返回假。详细情况请参考“isTopLevel”属性。

bool QWidget::isUpdatesEnabled () const

如果更新是生效的,返回真,否则返回假。详细情况请参考“updatesEnabled”属性。

bool QWidget::isVisible () const

如果这个窗口部件是可视的,返回真,否则返回假。详细情况请参考“visible”属性。

bool QWidget::isVisibleTo ( QWidget * ancestor ) const

如果ancestor被显示,这个窗口部件可以变为可视,返回真,否则返回假。

如果这个窗口部件自身或者它的每一个祖先,但是除了ancestor以外,已经被明确地指定为隐藏的时候,才是这样的情况。

如果这个窗口部件被屏幕上其它窗口弄得变暗,这个函数仍会返回真,但是如果它或者它们被移动了,它将被变为物理可视的。

isVisibleTo(0)和isVisible()很相似,除了它变为图标的情况或者这个窗口存在与其它虚拟桌面的情况。

也可以参考show()、hide()和visible

bool QWidget::isVisibleToTLW () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

这个函数是被反对的。它等于isVisible()。

void QWidget::keyPressEvent ( QKeyEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收这个窗口部件的键盘按下事件。

窗口部件最初必须调用setFocusPolicy()来接收焦点并且得到焦点用来接收键盘释放事件。

如果你重新实现这个处理器,如果你不能理解这个事件,你就忽略(ignore())这个事件,这是很重要的,这样这个窗口部件的父对象就可以说明它。

默认实现是如果用户按下Esc就关闭弹出窗口部件。否则这个事件就被忽略。

也可以参考keyReleaseEvent()、QKeyEvent::ignore()、focusPolicy, focusInEvent()、focusOutEvent()、event()和QKeyEvent

实例:picture/picture.cpp

QLineEditQTextEditQtMultiLineEdit中被重新实现。

void QWidget::keyReleaseEvent ( QKeyEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现用来接收这个窗口部件的键盘释放事件。

窗口部件最初必须调用setFocusPolicy()来接收焦点并且得到焦点用来接收键盘释放事件。

如果你重新实现这个处理器,如果你不能理解这个事件,你就忽略(ignore())这个事件,这是很重要的,这样这个窗口部件的父对象就可以说明它。

默认实现就是忽略这个事件。

也可以参考keyPressEvent()、QKeyEvent::ignore()、focusPolicyfocusInEvent()、focusOutEvent()、event()和QKeyEvent

QWidget * QWidget::keyboardGrabber () [静态]

返回当前正在捕获键盘输入的窗口部件的指针。

如果在这个应用程序中当前没有正在捕获键盘的窗口部件,0被返回。

也可以参考grabMouse()和mouseGrabber()。

QLayout * QWidget::layout () const

返回管理窗口部件孩子的几何形状的布局引擎的指针。

如果这个窗口部件没有布局,layout()返回一个零指针。

也可以参考sizePolicy

实例:chart/optionsform.cppfonts/simple-qfont-demo/viewer.cpp

void QWidget::leaveEvent ( QEvent * ) [虚 保护]

这个事件管理器可以在子类中被重新实现来接收窗口部件离开事件。

当鼠标光标离开这个窗口部件时,离开事件被发送给这个窗口部件。

也可以参考enterEvent()、mouseMoveEvent()和event()。

void QWidget::lower () [槽]

把这个窗口部件降低到它的父窗口部件的栈的底部。

如果在屏幕上有与这个窗口部件重叠的兄弟,这个窗口部件将被它后来的这些兄弟变暗。

也可以参考raise()和stackUnder()。

bool QWidget::macEvent ( MSG * ) [虚 保护]

这个特定的事件处理器可以在子类中被重新实现用来接收本地Macintosh事件。

在你重新实现的这个函数中,如果你想停止Qt对这个事件的处理,返回真。如果你返回假,这个本地事件被回传给Qt,它会把这个事件转换为一个Qt事件并且把它发送给这个窗口部件。

警告:这个函数是不可以移植的。

也可以参考QApplication::macEventFilter()。

QPoint QWidget::mapFrom ( QWidget * parent, const QPoint & pos ) const

parent的坐标系统中的这个窗口部件的坐标pos转换到这个窗口部件的坐标系统中。parent必须不能为0并且必须是这个调用窗口部件的父对象。

也可以参考mapTo()、mapFromParent()、mapFromGlobal()和underMouse

QPoint QWidget::mapFromGlobal ( const QPoint & pos ) const

把全局屏幕坐标pos转换为窗口部件坐标。

也可以参考mapToGlobal()、mapFrom()和mapFromParent()。

QPoint QWidget::mapFromParent ( const QPoint & pos ) const

把父窗口部件坐标pos转换为窗口部件坐标。

如果窗口部件没有父对象,就和mapFromGlobal()一样。

也可以参考mapToParent()、mapFrom()、mapFromGlobal()和underMouse

QPoint QWidget::mapTo ( QWidget * parent, const QPoint & pos ) const

把窗口部件坐标pos转换到parent坐标系统。parent必须不能为0并且必须是这个调用窗口部件的父对象。

也可以参考mapFrom()、mapToParent()、mapToGlobal()和underMouse

QPoint QWidget::mapToGlobal ( const QPoint & pos ) const

把窗口部件坐标pos转换为全局屏幕坐标。例如,
mapToGlobal(QPoint(0,0))
将会给出这个窗口部件的左上角像素的全局坐标。

也可以参考mapFromGlobal()、mapTo()和mapToParent()。

实例:scribble/scribble.cpp

QPoint QWidget::mapToParent ( const QPoint & pos ) const

把窗口部件坐标pos转换为父窗口部件中的一个坐标。

如果窗口部件没有父对象,就和mapToGlobal()一样。

也可以参考mapFromParent()、mapTo()、mapToGlobal()和underMouse

int QWidget::maximumHeight () const

返回这个窗口部件的最大高度。详细情况请参考“maximumHeight”属性。

QSize QWidget::maximumSize () const

返回这个窗口部件的最大大小。详细情况请参考“maximumSize”属性。

int QWidget::maximumWidth () const

返回这个窗口部件的最大宽度。详细情况请参考“maximumWidth”属性。

int QWidget::metric ( int m ) const [虚 保护]

虚函数QPaintDevice::metric()的内部实现。

使用QPaintDeviceMetrics来替代它。

m是要获得的规格。

QRect QWidget::microFocusHint () const

返回这个窗口部件的当前设置的微焦点提示的当前设置。详细情况请参考“microFocusHint”属性。

int QWidget::minimumHeight () const

返回这个窗口部件的最小高度。详细情况请参考“minimumHeight”属性。

QSize QWidget::minimumSize () const

返回这个窗口部件的最小大小。详细情况请参考“minimumSize”属性。

QSize QWidget::minimumSizeHint () const [虚]

返回这个窗口部件的建议最小大小。详细情况请参考“minimumSizeHint”属性。

QLineEditQtMultiLineEdit中被重新实现。

int QWidget::minimumWidth () const

返回这个窗口部件的最小宽度。详细情况请参考“minimumWidth”属性。

void QWidget::mouseDoubleClickEvent ( QMouseEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现来接收这个窗口部件的鼠标双击事件。

默认实现产生一个普通的鼠标点击事件。

注意在窗口部件得到mouseDoubleClickEvent()之前,它得到一个mousePressEvent()和一个mouseReleaseEvent()。

也可以参考mousePressEvent()、mouseReleaseEvent()、 mouseMoveEvent()、event()和QMouseEvent

QWidget * QWidget::mouseGrabber () [静态]

返回当前捕获鼠标输入的窗口部件的指针。

如果这个应用程序中当前没有捕获鼠标的窗口部件,0被返回。

也可以参考grabMouse()和keyboardGrabber()。

void QWidget::mouseMoveEvent ( QMouseEvent * e ) [虚 保护]

这个窗口部件可以在子类中被重新实现来接收这个窗口部件中的鼠标移动事件。

如果鼠标跟踪被切换为关闭,只有在鼠标被按下后移动的情况下,才会发生鼠标移动事件。如果鼠标跟踪被切换为开,即使鼠标没有被按下,只要移动就会发生鼠标移动事件。

QMouseEvent::pos()报告鼠标光标相对于这个窗口部件的位置。对于按下和释放事件,这个位置通常和最后一次鼠标移动事件的位置相同,但是如果鼠标非常快地移动和按下,这也许是不同的。这依赖于底层的窗口系统,而不是Qt。

也可以参考mouseTrackingmousePressEvent()、 mouseReleaseEvent()、mouseDoubleClickEvent()、event()和QMouseEvent

实例:aclock/aclock.cppdrawlines/connect.cppiconview/simple_dd/main.cpplife/life.cpppopup/popup.cppqmag/qmag.cppscribble/scribble.cpp

QSizeGrip中被重新实现。

void QWidget::mousePressEvent ( QMouseEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现来接收这个窗口部件中的鼠标按下事件。

如果你在mousePressEvent()中创建新的窗口部件,mouseReleaseEvent()也许不会像你所期待的那样结束,这依赖于底层的窗口系统(或X11窗口管理器)、这个窗口部件的位置并且也许更多。

当你再窗口外点击时,默认实现是关闭弹出窗口。对于其它窗口部件类型,它什么都不做。

也可以参考mouseReleaseEvent()、mouseDoubleClickEvent()、mouseMoveEvent()、event()和QMouseEvent

实例:biff/biff.cppdrawlines/connect.cppiconview/simple_dd/main.cpp, life/life.cpp, qmag/qmag.cppscribble/scribble.cpptooltip/tooltip.cpp

QSizeGrip中被重新实现。

void QWidget::mouseReleaseEvent ( QMouseEvent * e ) [虚 保护]

这个事件处理器可以在子类中被重新实现来接收鼠标释放事件。

也可以参考mouseDoubleClickEvent()、mouseMoveEvent()、event()和QMouseEvent

实例:drawlines/connect.cpphello/hello.cpppopup/popup.cppqmag/qmag.cppscribble/scribble.cppshowimg/showimg.cppt14/cannon.cpp

void QWidget::move ( const QPoint & ) [槽]

设置窗口部件在它的父窗口部件中的位置。详细情况请参考“pos”属性。

void QWidget::move ( int x, int y ) [虚 槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

这个和move( QSize(x, y) )一致。

void QWidget::moveEvent ( QMoveEvent * ) [虚 保护]

这个事件处理器可以在子类中被重新实现来接收窗口部件移动事件。当窗口部件接收到这个事件时,它已经在新的位置上了。

旧的位置可以通过QMoveEvent::oldPos()来访问。

也可以参考resizeEvent()、event()、posQMoveEvent

bool QWidget::ownCursor () const

如果这个窗口部件使用它自己的光标,返回真,否则返回假。详细情况请参考“ownCursor”属性。

bool QWidget::ownFont () const

如果这个窗口部件使用它自己的字体,返回真,否则返回假。详细情况请参考“ownFont”属性。

bool QWidget::ownPalette () const

如果这个窗口部件使用它自己的调色板,返回真,否则返回假。详细情况请参考“ownPalette”属性。

void QWidget::paintEvent ( QPaintEvent * ) [虚 保护]

这个事件处理器可以在子类中被重新实现来接收绘制事件。

绘制事件就是重新绘制这个窗口部件的所有部分的一个请求。它可以是repaint()或update()的结果,或者因为这个窗口部件原来被变暗并且现在已经不再被覆盖了,或者其它很多原因。

很多窗口部件在当它们被请求时,它们很简单地重新绘制整个界面,但是一些比较慢的窗口部件需要通过仅仅绘制被请求的区域QPaintEvent::region()进行优化。这个速度优化不会改变结果,在事件处理过程中,绘制仅仅发生在被改变的区域中。例如,QListViewQCanvas就是这样做的。

Qt也试图通过把多个绘制事件合并为一个来加快绘制速度。当update()被调用几次或者窗口系统发送几次绘制事件,Qt把它们合并为一个比较大区域(请参考QRegion::unite())的一个事件中。repaint()不允许这样优化,所以只要可能我们建议使用update()。

当绘制事件发生,更新区域通常被擦除,所以你正在这个窗口部件的背景上绘制。这里有一些例外并且QPaintEvent::erased()告诉你这个窗口部件是否被擦除。

背景可以通过使用setBackgroundMode()、setPaletteBackgroundColor()或setBackgroundPixmap()来设置。setBackgroundMode()的文档详细描述了背景,我们建议你去读一下。

也可以参考event()、repaint()、update()、QPainterQPixmapQPaintEvent

实例:drawdemo/drawdemo.cppdrawlines/connect.cppqmag/qmag.cppscribble/scribble.cppsplitter/splitter.cppt8/cannon.cppt9/cannon.cpp

QButtonQFrameQGLWidgetQSizeGripQStatusBarQTabBar中被重新实现。

const QPalette & QWidget::palette () const

返回这个窗口部件的调色板。详细情况请参考“palette”属性。

const QColor & QWidget::paletteBackgroundColor () const

返回这个窗口部件的背景色。详细情况请参考“paletteBackgroundColor”属性。

const QPixmap * QWidget::paletteBackgroundPixmap () const

返回这个窗口部件的背景像素映射。详细情况请参考“paletteBackgroundPixmap”属性。

void QWidget::paletteChange ( const QPalette & oldPalette ) [虚 保护]

这个虚函数是从setPalette()中被调用的。oldPalette是原来的调色板,你可以通过palette()得到新的调色板。

如果你的窗口部件需要知道什么时候调色板发生变化了,请重新实现这个函数。

也可以参考palettepalette

const QColor & QWidget::paletteForegroundColor () const

返回这个窗口部件的前景色。详细情况请参考“paletteForegroundColor”属性。

QWidget * QWidget::parentWidget ( bool sameWindow = FALSE ) const

返回这个窗口部件的父窗口部件的指针,如果它没有,就返回零指针。如果sameWindow为真并且这个窗口部件是顶级的,就返回0,否则返回它的父窗口部件。

实例:mdi/application.cpp

void QWidget::polish () [虚 槽]

延时窗口部件的初始化。

这个函数将在窗口部件完全创建完毕之后并且在它每一次被显示之前被调用。

抛光对于依赖一个特定窗口部件的最终初始化是很有用的。有一些事情构造函数不能够决定,因为子类的初始化也许没有完成。

在这个函数之后,窗口部件就有一个适当的字体和调色板并且QApplication::polish()已经被调用。

当重新实现这个函数的时候,记得调用QWidget的实现。

也可以参考constPolish()和QApplication::polish()。

实例:menu/menu.cpp

QPoint QWidget::pos () const

返回这个窗口部件在它父窗口部件中的位置。详细情况请参考“pos”属性。

bool QWidget::qwsEvent ( QWSEvent * ) [虚 保护]

这个特定的事件处理器可以在子类中被重新实现来接收本地的Qt/Embedded事件。

在你重新实现的这个函数中,如果你想停止Qt对这个事件的处理,返回真。如果你返回假,这个本地事件被回传给Qt,它会把这个事件转换为一个Qt事件并且把它发送给这个窗口部件。

警告:这个函数是不可以移植的。

也可以参考QApplication::qwsEventFilter()。

void QWidget::raise () [槽]

把这个窗口部件升高到它的父窗口部件的栈的顶部。

如果在屏幕上有与这个窗口部件重叠的兄弟,这个窗口部件将在它后来的这些兄弟之前变的可视了。

也可以参考lower()和stackUnder()。

实例:showimg/showimg.cpp

void QWidget::recreate ( QWidget * parent, WFlags f, const QPoint & p, bool showIt = FALSE )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

这个函数的提供是为了从Qt 1.0移植到2.0。在Qt 2.0中它已经被重新命名为reparent()。

QRect QWidget::rect () const

返回不包含任何窗口框架的窗口部件的内部几何形状。详细情况请参考“rect”属性。

void QWidget::releaseKeyboard ()

释放键盘捕获。

也可以参考grabKeyboard()、grabMouse()和releaseMouse()。

void QWidget::releaseMouse ()

释放鼠标捕获。

也可以参考grabMouse()、grabKeyboard()和releaseKeyboard()。

void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽]

通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。

如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h)

如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换。

如果你需要立即重新绘制,我们建议使用repaint(),比如在动画期间。在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪烁。

警告:如果你在一个函数中调用repaint(),而它自己又被paintEvent()调用,你也许会看到无线循环。update()函数从来不会产生循环。

也可以参考update()、paintEvent()、updatesEnablederase()。

实例:qwerty/qwerty.cpp

void QWidget::repaint () [槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

这个版本擦除并且重新绘制整个窗口部件。

void QWidget::repaint ( bool erase ) [槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

这个版本重新绘制整个窗口部件。

void QWidget::repaint ( const QRect & r, bool erase = TRUE ) [槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。

如果erase为真,擦除窗口部件区域r

void QWidget::repaint ( const QRegion & reg, bool erase = TRUE ) [槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。

如果erase为真,擦除窗口部件区域reg

如果你需要立即重新绘制,我们建议使用repaint(),比如在动画期间。一连串的多次调用update()将产生一个单一的绘制事件。

警告:如果你在一个函数中调用repaint(),而它自己又被paintEvent()调用,你也许会看到无线循环。update()函数从来不会产生循环。

也可以参考update()、paintEvent()、updatesEnablederase()。

void QWidget::reparent ( QWidget * parent, WFlags f, const QPoint & p, bool showIt = FALSE ) [虚]

重新定义这个窗口部件的父对象。这个窗口部件得到新的parent,新的窗口部件标记(f,但通常使用0)和在新的父对象中的新位置(p)。

如果showIt为真,一旦窗口部件被重新定义父对象,show()就被调用。

如果新的父窗口部件在一个不同的顶级窗口部件中,被重新定义父对象的窗口部件和它的孩子们将被添加到新窗口部件的tab链的最后。如果被移动的窗口部件之一拥有键盘焦点reparent()为这个窗口部件调用clearFocus()。

如果新的父窗口部件和原来的父对象在同一个顶级窗口部件中,reparent()不会改变tab顺序或者键盘焦点。

警告:你对这个函数的需要是绝对不必要的。如果你有一个窗口部件动态的改变它的内容,使用QWidgetStackQWizard会更容易的多。

也可以参考getWFlags()。

void QWidget::reparent ( QWidget * parent, const QPoint & p, bool showIt = FALSE )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

一个方便的重新定义这个窗口部件的父对象的版本没有把窗口部件标记作为参数。

调用reparent(parent, getWFlags() & ~WType_Mask, p, showIt)。

void QWidget::resetInputContext () [保护]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。比如,改变焦点到另一个窗口部件,移动光标,等等。

void QWidget::resize ( const QSize & ) [槽]

设置不包含任何窗口框架的窗口部件的大小。详细情况请参考“size”属性。

void QWidget::resize ( int w, int h ) [虚 槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

这个和resize( QSize(w, h) )一致。

void QWidget::resizeEvent ( QResizeEvent * ) [虚 保护]

这个事件处理器可以在子类中被重新实现来接收窗口部件重定义大小事件。当resizeEvent()被调用时,这个窗口部件已经有了新的几何形状。原来的大小可以通过QResizeEvent::oldSize()访问。

这个窗口部件竟被擦除并且在处理重定义大小事件之后立即接收到一个绘制事件。在这个处理器中不需要(或者必须)绘制。

WResizeNoErase创建的窗口部件将不会被擦除。不过,它们也将收到一个对于整个区域的绘制事件。再一次的,在这个处理器中不需要(或者必须)绘制。

如果窗口部件的自动面具生效,默认实现调用updateMask()。

也可以参考moveEvent()、event()、sizeQResizeEventpaintEvent()。

实例:drawdemo/drawdemo.cppmainlyQt/editor.cppmainlyXt/editor.cppmenu/menu.cppqmag/qmag.cppscribble/scribble.cpptooltip/tooltip.cpp

QFrameQGLWidget中被重新实现。

void QWidget::scroll ( int dx, int dy )

卷动包括它的孩子的窗口部件,向右dx像素并且向下dy像素。dxdy都可以为负。

在卷动后,scroll()发送绘制事件,只为了读的部分,但不写。例如,当向右卷动10像素,窗口部件的最左面10像素需要重新绘制。绘制事件也许立即或者稍后被交付,依赖于一些启发式。

也可以参考QScrollViewerase()和bitBlt()。

void QWidget::scroll ( int dx, int dy, const QRect & r )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

这个版本仅卷动r并且不移动窗口部件的孩子。

如果r为空或者无效,结果是未定义的。

也可以参考QScrollViewerase()和bitBlt()。

void QWidget::setAcceptDrops ( bool on ) [虚]

设置对于这个窗口部件放下事件是否生效为on。详细情况请参考“acceptDrops”属性。

void QWidget::setActiveWindow () [虚]

设置包含这个窗口部件的顶级窗口部件为激活窗口。

激活窗口就是拥有键盘输入焦点的可视的顶级窗口。

这个函数执行的操作和在一个顶级窗口的标题栏点击鼠标是一样的。在X11上,结果依赖于窗口管理器。如果你想确认窗口也被堆在顶部,请另外调用raise()。注意这个窗口已经被变为可视,除非setActiveWindow()没有效果。

在Windows上,如果当应用程序不是当前激活的应用程序,如果你调用这个函数,然后它不会使它变为激活窗口。它将会在标题栏条目上闪烁蓝色标明这个窗口已经做了些什么。这是由于Microsoft不允许一个应用程序打断用户当前在另一个应用程序上所做的事情。

也可以参考isActiveWindowtopLevelWidget()和show()。

QXtWidget中被重新实现。

void QWidget::setAutoMask ( bool ) [虚]

设置这个窗口部件自动面具特征是否生效。详细情况请参考“autoMask”属性。

void QWidget::setBackgroundColor ( const QColor & c ) [虚]

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。使用setPaletteBackgroundColor()或setEraseColor()替代它。

实例:customlayout/main.cppdesktop/desktop.cpphello/main.cppmovies/main.cppsplitter/splitter.cpp

void QWidget::setBackgroundMode ( BackgroundMode ) [虚]

设置绘制窗口部件背景所使用的颜色模式。详细情况请参考“backgroundMode”属性。

void QWidget::setBackgroundMode ( BackgroundMode m, BackgroundMode visual )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置这个窗口部件自己的背景模式为m并且可视背景模式为visual。可视背景模式和可设计的属性backgroundColorforegroundColorbackgroundPixmap一起使用。

对于复杂的控制,合理的背景模式有时和窗口部件自己的背景模式不同。例如,微调框把PaletteBackground作为背景模式(通常是暗灰色),当它被嵌入到行编辑控件中使用PaletteBase(通常是白色)。因为行编辑控件覆盖微调框的绝大部分可视区域,它定义了PaletteBase为它的可视背景模式。改变backgroundColor属性会改变行编辑控件的背景,这正是用户在Qt设计器中所期待的。

void QWidget::setBackgroundOrigin ( BackgroundOrigin ) [虚]

设置这个窗口部件背景的原点。详细情况请参考“backgroundOrigin”属性。

void QWidget::setBackgroundPixmap ( const QPixmap & pm ) [虚]

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。使用setPaletteBackgroundPixmap()或setErasePixmap()替代它。

实例:desktop/desktop.cpp

void QWidget::setBaseSize ( const QSize & )

设置这个窗口部件的基础大小。详细情况请参考“baseSize”属性。

void QWidget::setBaseSize ( int basew, int baseh )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

这个和setBaseSize( QSize(basew, baseh) )一致。设置窗口部件基础大小的宽为basew,高为baseh

void QWidget::setCaption ( const QString & ) [虚 槽]

设置窗口标题。详细情况请参考“caption”属性。

void QWidget::setCursor ( const QCursor & ) [虚]

设置这个窗口部件的光标形状。详细情况请参考“cursor”属性。

void QWidget::setDisabled ( bool disable ) [槽]

如果disable为真,使窗口部件输入事件失效,否则使输入事件生效。

更多信息请参考enabled文档。

也可以参考isEnabledTo()、QKeyEventQMouseEventenabledChange()。

void QWidget::setEnabled ( bool ) [虚 槽]

设置这个窗口部件是否生效。详细情况请参考“enabled”属性。

void QWidget::setEraseColor ( const QColor & color ) [虚]

设置这个窗口部件的擦除颜色为color

擦除颜色就是在paintEvent()被调用之前这个窗口部件被清空的颜色。如果有擦除像素映射(使用setErasePixmap()设置),然后这个属性就会有不确定的值。

也可以参考erasePixmap()、backgroundColor()、backgroundModepalette

void QWidget::setErasePixmap ( const QPixmap & pixmap ) [虚]

设置这个窗口部件的擦除像素映射为pixmap

这个像素映射就是在paintEvent()被调用之前用来清空这个窗口部件的。

void QWidget::setFixedHeight ( int h )

设置这个窗口部件的最小高度和最大高度都为h,而不改变宽度。为了方便而提供。

也可以参考sizeHintminimumSizemaximumSizesetFixedSize()。

实例:fonts/simple-qfont-demo/viewer.cpplayout/layout.cppqdir/qdir.cppshowimg/showimg.cpp

void QWidget::setFixedSize ( const QSize & s )

设置这个窗口部件的最小大小和最大大小都为s,这样就可以防止它变大或者变小。

也可以参考maximumSizeminimumSize

void QWidget::setFixedSize ( int w, int h )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置窗口部件的宽度为w,高度为h

void QWidget::setFixedWidth ( int w )

设置这个窗口部件的最小宽度和最大宽度都为h,而不改变高度。为了方便而提供。

也可以参考sizeHintminimumSizemaximumSizesetFixedSize()。

实例:network/ftpclient/ftpmainwindow.cppprogressbar/progressbar.cppqdir/qdir.cpp

void QWidget::setFocus () [虚 槽]

把键盘输入焦点给这个窗口部件(或者它的焦点代理)。

首先,一个焦点移出事件会被发送给焦点窗口部件(如果有的话)告诉它关于失去焦点的事情。然后一个焦点进入事件被发送给这个窗口部件告诉它刚刚接收到焦点。(如果焦点移出和进入的窗口部件是同一个的话,就什么都没有发生。)

setFocus()会把焦点给一个窗口部件,而不管它的焦点策略,但是不会清空任何键盘捕获(请参考grabKeyboard())。

请注意如果窗口部件是被隐藏的,它将不接收焦点。

警告:如果你在一个函数中调用setFocus(),而这个函数自己被focusOutEvent()或focusInEvent()调用,你也许会体验到无限循环。

也可以参考focusclearFocus()、focusInEvent()、focusOutEvent()、focusPolicyQApplication::focusWidget()、grabKeyboard()和grabMouse()。

实例:addressbook/centralwidget.cpplineedits/lineedits.cppmdi/application.cpppopup/popup.cpprot13/rot13.cppt8/main.cppwizard/wizard.cpp

void QWidget::setFocusPolicy