代码改变世界

QWidget类参考

2017-09-01 11:35  nigaopeng  阅读(857)  评论(0编辑  收藏  举报

 

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

#include <qwidget.h>

继承QObjectQPaintDevice

QButtonQFrameQDialogQComboBoxQDataBrowserQDataViewQDateTimeEditQDesktopWidgetQDialQDockAreaQGLWidgetQHeaderQMainWindowQNPWidgetQScrollBarQSizeGripQSliderQSpinBoxQStatusBarQTabBarQTabWidgetQWorkspaceQXtWidget继承。

所有成员函数的列表。

公有成员

公有槽

静态公有成员

属性

  • bool acceptDrops - 窗口部件中放下事件是否有效
  • bool autoMask - 窗口部件中自动面具特征是否有效
  • QBrush backgroundBrush - 窗口部件的背景画刷 (只读)
  • BackgroundMode backgroundMode - 绘制窗口部件背景所使用的颜色模式
  • BackgroundOrigin backgroundOrigin - 窗口部件的背景的原点
  • QSize baseSize - 窗口部件的基础大小
  • QString caption - 窗口标题
  • QRect childrenRect - 窗口部件的子对象的边界矩形 (只读)
  • QRegion childrenRegion - 窗口部件的子对象所占用的组合区域 (只读)
  • QColorGroup colorGroup - 窗口部件调色板的当前颜色组 (只读)
  • QCursor cursor - 窗口部件的光标外形
  • bool customWhatsThis - 窗口部件是否手动处理“这是什么”的帮助 (只读)
  • bool enabled - 窗口部件是否有效
  • bool focus - 窗口部件(或者它的焦点代理)是否得到键盘输入焦点 (只读)
  • bool focusEnabled - 窗口部件是否接收键盘焦点 (只读)
  • FocusPolicy focusPolicy - 窗口部件接收键盘焦点的策略
  • QFont font - 窗口部件当前的字体集
  • QRect frameGeometry - 相对于它的父对象包含任何窗口框架的窗口部件的几何形状 (只读)
  • QSize frameSize - 包含任何窗口框架的窗口部件的大小 (只读)
  • QRect geometry - 相对于它的父对象不包括窗口框架的窗口部件的几何形状
  • int height - 不包括窗口框架的窗口部件的高度 (只读)
  • bool hidden - 窗口部件是否明确地隐藏 (只读)
  • QPixmap icon - 窗口部件图标像素映射
  • QString iconText - 窗口部件图标文本
  • bool isActiveWindow - 窗口部件或者它的一个子对象是否是活动窗口 (只读)
  • bool isDesktop - 窗口部件是否是桌面窗口部件,比如,代表桌面 (只读)
  • bool isDialog - 窗口部件是否是对话框窗口部件 (只读)
  • bool isModal - 窗口部件是否是模式窗口部件 (只读)
  • bool isPopup - 窗口部件是否是弹出窗口部件 (只读)
  • bool isTopLevel - 窗口部件是否是顶级窗口部件 (只读)
  • int maximumHeight - 窗口部件的最大高度
  • QSize maximumSize - 窗口部件的最大大小
  • int maximumWidth - 窗口部件的最大宽度
  • QRect microFocusHint - 窗口部件的当前设置的微焦点提示 (只读)
  • bool minimized - 窗口部件是否是最小化的(变为图标了) (只读)
  • int minimumHeight - 窗口部件的最小高度
  • QSize minimumSize - 窗口部件的最小大小
  • QSize minimumSizeHint - 建议的窗口部件最小大小 (只读)
  • int minimumWidth - 窗口部件的最小宽度
  • bool mouseTracking - 窗口部件跟踪鼠标是否生效
  • bool ownCursor - 窗口部件是否使用它自己的光标 (只读)
  • bool ownFont - 窗口部件是否使用它自己的字体 (只读)
  • bool ownPalette - 窗口部件是否使用它自己的调色板 (只读)
  • QPalette palette - 窗口部件的调色板
  • QColor paletteBackgroundColor - 窗口部件的背景色
  • QPixmap paletteBackgroundPixmap - 窗口部件的背景像素映射
  • QColor paletteForegroundColor - 窗口部件的前景色
  • QPoint pos - 窗口部件在它的父窗口部件中的位置
  • QRect rect - 不包含任何窗口框架的窗口部件的内部几何形状 (只读)
  • QSize size - 不包含任何窗口框架的窗口部件的大小
  • QSize sizeHint - 建议的窗口部件大小 (只读)
  • QSize sizeIncrement - 窗口部件的大小增量
  • QSizePolicy sizePolicy - 窗口部件的默认布局行为
  • bool underMouse - 窗口部件是否在鼠标光标下 (只读)
  • bool updatesEnabled - 更新是否生效
  • bool visible - 窗口部件是否可视 (只读)
  • QRect visibleRect - 窗口部件的当前可视矩形 (只读)
  • int width - 不包含任何窗口框架的窗口部件宽度 (只读)
  • int x - 相对于它的父对象包含任何窗口框架的窗口部件的x坐标 (只读)
  • int y - 相对于它的父对象包含任何窗口框架的窗口部件的y坐标 (只读)

保护成员


详细描述

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

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

 

 

  • 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()分别设置标题栏和图标。

     

 

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


成员类型文档

QWidget::BackgroundOrigin

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

被绘制的像素映射使用:

  • QWidget::WidgetOrigin - 窗口部件的坐标系统。
  • QWidget::ParentOrigin - 父窗口部件的坐标系统。
  • QWidget::WindowOrigin - 顶级窗口的坐标系统。

QWidget::FocusPolicy

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

policy可以是:

  • QWidget::TabFocus - 窗口部件通过Tab获得焦点。
  • QWidget::ClickFocus - 窗口部件通过点击获得焦点。
  • QWidget::StrongFocus - 窗口部件通过Tab和点击获得焦点。
  • QWidget::WheelFocus - 像StrongFocus那样加上窗口部件通过使用鼠标滚轮获得焦点。
  • QWidget::NoFocus - 窗口部件不接收焦点。

 


成员函数文档

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.cpp、 progress/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()、focusPolicyfocusInEvent()、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.cpplife/life.cppqmag/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 ) [虚 槽]

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

这个和moveQSize(xy) )一致。

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(parentgetWFlags() & ~WType_MaskpshowIt)。

void QWidget::resetInputContext () [保护]

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

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

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

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

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

这个和resizeQSize(wh) )一致。

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

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

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

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

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

 

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

实例:drawdemo/drawdemo.cppmainlyQt/editor.cppmainlyXt/editor.cpp 、menu/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 )

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

这个和setBaseSizeQSize(basewbaseh) )一致。设置窗口部件基础大小的宽为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 ( FocusPolicy ) [虚]

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

void QWidget::setFocusProxy ( QWidget * w ) [虚]

设置这个窗口部件的焦点代理为窗口部件w。如果w为0,这个函数重置这个窗口部件没有焦点代理。

一些窗口部件,比如QComboBox,能够“拥有焦点”,但创建一个子窗口部件来实际处理这个焦点。例如,QComboBox创建了一个QLineEdit来处理焦点。

当“这个窗口部件”获得焦点时,setFocusProxy()设置这个窗口部件实际获得焦点。如果有了一个焦点代理,focusPolicy()、setFocusPolicy()、setFocus()和hasFocus()都在这个焦点代理上操作。

 

也可以参考focusProxy()。

void QWidget::setFont ( const QFont & ) [虚]

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

QComboBoxQLabelQTabDialog中被重新实现。

void QWidget::setFont ( const QFont & f, bool )

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

使用setFont(const QFont& font)替代它。

void QWidget::setGeometry ( const QRect & ) [虚 槽]

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

void QWidget::setGeometry ( int x, int y, int w, int h ) [虚 槽]

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

这相当于setGeometryQRect(xywh) )。

void QWidget::setIcon ( const QPixmap & ) [虚 槽]

设置这个窗口部件图标像素映射。详细情况请参考“icon”属性。

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

设置这个窗口部件图标文本。详细情况请参考“iconText”属性。

void QWidget::setKeyCompression ( bool compress ) [虚 保护]

如果compress为真,使键盘事件压缩生效,并且如果compress为假,使键盘事件压缩失效。

默认情况下,键盘压缩是关闭的,所以窗口部件对于每一个键盘按下(或者更多,因为自动重复通常是打开的)都接收到一个键盘按下事件。如果你把它打开并且你的应用程序更不上键盘输入,Qt也许会试图压缩键盘事件,这样每一个事件中就会处理多于一个字符的情况。

例如,如果布局重新运算占用太长时间的CPU,一个字处理器窗口部件接收每一个QKeyEvent::text()中的2个、3个或更多字符。

如果窗口部件支持多字符unicode输入,它对于这种压缩打开总是安全的。

Qt只对可打印的字符执行键盘事件压缩。修正键、光标移动键、功能键和其它操作键(比如,Escape、Return、Backspace、PrintScreen)将会停止键盘事件压缩,即使如果可以更多可压缩的键盘事件。

并不是所有的平台都支持这种压缩,在这种情况下如果把这个选项打开将不会有任何效果。

 

也可以参考QKeyEvent::text().

void QWidget::setMask ( const QBitmap & bitmap ) [虚]

导致只有和bitmap中为1的位对应的窗口部件的像素是可视的。如果包含像素的区域在窗口部件的rect()之外,在那个区域的窗口系统控制允许可视,也许不可视,依赖于平台。

注意如果区域相当复杂,这种效果会很慢。

 

也可以参考clearMask()。

void QWidget::setMask ( const QRegion & region ) [虚]

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

导致只有和region重合的窗口部件的部分是可视的。如果包含像素的区域在窗口部件的rect()之外,在那个区域的窗口系统控制允许可视,也许不可视,依赖于平台。

注意如果区域相当复杂,这种效果会很慢。

 

也可以参考clearMask()。

void QWidget::setMaximumHeight ( int maxh )

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

void QWidget::setMaximumSize ( const QSize & )

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

void QWidget::setMaximumSize ( int maxw, int maxh ) [虚]

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

这个函数相当于setMaximumSizeQSize(maxwmaxh) )。设置最大宽度为maxw,最大高度为maxh

void QWidget::setMaximumWidth ( int maxw )

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

void QWidget::setMicroFocusHint ( int x, int y, int width, int height, bool text = TRUE, QFont * f = 0 ) [虚 保护]

当窗口部件得到焦点,它应该为合适的大小和位置——xywidth与em>height,调用setMicroFocusHint。这没有可视效果,它仅仅为任意系统指定的输入处理工具提供提示。

如果这是一个文本输入位置,text参数应该为真。

在Windows版本的Qt中,这个方法设置系统插入符号,这用户用户可访问的焦点处理。如果text为真,在远东亚洲语言输入系统中,它也会设置输入法的。

在X11版本的Qt中,如果text为真,这个方法为复杂语言输入处理设置XIM“spot”点。

字体参数f现在不使用了。

 

也可以参考microFocusHint

void QWidget::setMinimumHeight ( int minh )

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

void QWidget::setMinimumSize ( const QSize & )

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

void QWidget::setMinimumSize ( int minw, int minh ) [虚]

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

这个函数相当于setMinimumSizeQSize(minw, minh) )。设置最小宽度为minw,最小高度为minh

void QWidget::setMinimumWidth ( int minw )

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

void QWidget::setMouseTracking ( bool enable ) [虚 槽]

设置对于这个窗口部件鼠标跟踪是否生效为enable。详细情况请参考“mouseTracking”属性。

void QWidget::setPalette ( const QPalette & ) [虚]

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

QComboBoxQScrollBarQSlider中被重新实现。

void QWidget::setPalette ( const QPalette & p, bool )

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

使用setPalette( const QPalette& p )替代它。

void QWidget::setPaletteBackgroundColor ( const QColor & ) [虚]

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

void QWidget::setPaletteBackgroundPixmap ( const QPixmap & ) [虚]

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

void QWidget::setPaletteForegroundColor ( const QColor & )

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

void QWidget::setSizeIncrement ( const QSize & )

设置这个窗口部件的大小增量。详细情况请参考“sizeIncrement”属性。

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

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

设置x(宽度)大小增量为w,y(高度)大小增量为h

void QWidget::setSizePolicy ( QSizePolicy ) [虚]

设置这个窗口部件的默认布局方式。详细情况请参考“sizePolicy”属性。

void QWidget::setStyle ( QStyle * style )

设置这个窗口部件的图形用户界面风格为style。风格对象的所有权不能被转让。

如果没有风格被设置,这个窗口部件使用应用程序的风格QApplication::style()替代它。

设置窗口部件的风格对于已经存在或未来的子窗口部件没有效果。

警告:当你想显示Qt的风格的能力时,这个函数对于演示目的很有用。真正的应用程序应该避免它并且使用一个一致的图形用户界面风格来替代它。

 

也可以参考style()、QStyleQApplication::style()和QApplication::setStyle()。

实例:grapher/grapher.cppprogressbar/progressbar.cpp

QStyle * QWidget::setStyle ( const QString & style )

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

使用QStyleFactory设置这个窗口部件的图形用户界面风格为style

void QWidget::setTabOrder ( QWidget * first, QWidget * second ) [静态]

在焦点窗口部件的环中移动second窗口部件,这样当Tab被按下时,键盘焦点first窗口部件移动到second窗口部件。

注意因为second窗口部件的tab顺序被改变,你应该用链的方式安排顺序:

 

    setTabOrder( a, b ); // a到b
    setTabOrder( b, c ); // a到b到c
    setTabOrder( c, d ); // a到b到c到d
  

不能像这样:

 

    setTabOrder( c, d ); // c到d,错误
    setTabOrder( a, b ); // a到b并且c到d
    setTabOrder( b, c ); // a到b到c,而不是c到d
  

如果firstsecond有焦点代理,setTabOrder()替代它/它们的代理。

 

也可以参考focusPolicysetFocusProxy()。

实例:customlayout/main.cpp.

void QWidget::setUpdatesEnabled ( bool enable ) [虚 槽]

设置更新是否生效为enable。详细情况请参考“updatesEnabled”属性。

void QWidget::setWFlags ( WFlags f ) [虚 保护]

设置窗口部件标记为f

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

 

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

void QWidget::show () [虚 槽]

显示这个窗口部件和它的子窗口部件。

如果它的大小或位置已经发生改变,Qt保证窗口部件正好在被显示之前得到移动和重定义大小事件。

你几乎不用重新实现这个函数。如果你需要在一个窗口部件被显示之前改变一些东西,请使用showEvent()替代它。如果你需要对初始化延时,请使用polish()。

 

也可以参考showEvent()、hide()、showMinimized()、showMaximized()、showNormal()、visiblepolish()。

实例:canvas/main.cppfonts/simple-qfont-demo/simple-qfont-demo.cpplife/main.cpppopup/popup.cppt1/main.cppt3/main.cppt4/main.cpp

QDialogQMenuBar中被重新实现。

void QWidget::showEvent ( QShowEvent * ) [虚 保护]

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

在窗口部件被显示之前,非自发显示事件立即被发送给窗口部件。顶级窗口部件的自发显示事件在这之后被交付。

 

也可以参考event()和QShowEvent

实例:qdir/qdir.cpp

void QWidget::showFullScreen () [槽]

用全屏模式显示这个窗口部件。

调用这个函数只有对顶级窗口部件有效。

为了从全屏模式返回,请调用showNormal()。

全屏模式在Windows下工作的非常好,但是在X下却有些问题。这些问题是由于指定X11客户端和窗口管理器之间通讯的ICCCM协议的限制。ICCCM很简单地不能理解无装饰的全屏模式窗口这一概念。因此,我们所能做的最好方式是请求一个无边框窗口并且放置和重定以它的大小为整个屏幕。依赖窗口管理器,这也许能工作,也许不能。无边框窗口使用MOTIF提示被请求,至少可以被实际存在地所有现代窗口管理器能够部分支持。

另一个方法是绕过整个窗口管理器并且使用WX11BypassWM标记创建一个窗口。尽管这样还会有其它一些问题,比如完全地破坏键盘焦点和当桌面变化时或用户升起其它窗口时会有非常奇怪的效果。

遵循现代的后ICCCM规范的未来X11窗口管理器也许能够完全地支持全屏模式。

 

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

void QWidget::showMaximized () [虚 槽]

最大化显示这个窗口部件。

对不是顶级窗口部件的,调用这个函数没有任何效果。

在X11下,这个函数在特定窗口管理器下允许不能正常工作。关于为什么的详细情况请参考窗口几何形状文档

 

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

实例:canvas/main.cpphelpviewer/main.cppmdi/application.cppqwerty/main.cppqwerty/qwerty.cppscribble/main.cpp

void QWidget::showMinimized () [虚 槽]

最小化显示这个窗口为一个图标。

对不是顶级窗口部件的,调用这个函数没有任何效果。

 

也可以参考showNormal()、showMaximized()、show()、hide(), visibleminimized

void QWidget::showNormal () [虚 槽]

在窗口部件被最大化或最小化之后,恢复它。

对不是顶级窗口部件的,调用这个函数没有任何效果。

 

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

实例:mdi/application.cpp

QSize QWidget::size () const

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

QSize QWidget::sizeHint () const [虚]

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

QSizeGrip中被重新实现。

QSize QWidget::sizeIncrement () const

返回窗口部件的大小增量。详细情况请参考“sizeIncrement”属性。

QSizePolicy QWidget::sizePolicy () const [虚]

返回窗口部件的默认布局行为。详细情况请参考“sizePolicy”属性。

void QWidget::stackUnder ( QWidget * w ) [槽]

把窗口部件放在父窗口部件栈中w的下面。

为了保证这个能工作,这个窗口部件自己和w必须是兄弟。

 

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

QStyle & QWidget::style () const

返回这个窗口部件的图形用户界面的风格。

 

也可以参考QWidget::setStyle()、QApplication::setStyle()和QApplication::style()。

void QWidget::styleChange ( QStyle & oldStyle ) [虚 保护]

当窗口部件的风格发生变化时,这个虚函数被调用。oldStyle是原来的图形用户界面风格,你可以通过style()得到新的风格。

如果你的窗口部件需要知道什么时候它的图形用户界面发生变化,请重新实现这个函数。你几乎必然需要使用update()来更新窗口部件。

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

 

也可以参考QApplication::setStyle()、style()、update()和updateGeometry()。

void QWidget::tabletEvent ( QTabletEvent * e ) [虚 保护]

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

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

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

 

也可以参考QTabletEvent::ignore()、QTabletEvent::accept()、event()和QTabletEvent

WFlags QWidget::testWFlags ( WFlags f ) const

返回这个窗口部件的标记和f的位与(AND)运算结果。

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

 

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

QWidget * QWidget::topLevelWidget () const

返回这个窗口部件的顶级窗口部件,比如,有(或者能够有)窗口系统框架的上一级祖先。

如果这个窗口部件是顶级的,它自己被返回。

通常的使用方法是改变窗口标题:

 

        aWidget->topLevelWidget()->setCaption( "New Caption" );
    

 

也可以参考isTopLevel

void QWidget::unsetCursor () [虚]

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

void QWidget::unsetFont ()

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

void QWidget::unsetPalette ()

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

void QWidget::update () [槽]

更新窗口部件,除非更新已经失效或者窗口部件被隐藏。

这个函数不会导致一个立刻的重新绘制——更正确的是,当Qt回到主事件回路中时,它规划了所要处理的绘制事件。这样允许Qt来优化得到比调用repaint()更快的速度和更少的闪烁。

几次调用update()的结果通常仅仅是一次paintEvent()调用。

Qt通常在paintEvent()调用之前擦除这个窗口部件的区域。仅仅只有在WRepaintNoErase窗口部件标记被设置的时候,窗口部件本身对绘制它所有的像素负有责任。

 

也可以参考repaint()、paintEvent()、updatesEnablederase()和setWFlags()。

实例:desktop/desktop.cppscrollview/scrollview.cpp

void QWidget::update ( int x, int y, int w, int h ) [槽]

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

更新窗口部件中的矩形(xywh),除非更新已经失效或者窗口部件被隐藏。

这个函数不会导致一个立刻的重新绘制——更正确的是,当Qt回到主事件回路中时,它规划了所要处理的绘制事件。这样允许Qt来优化得到比调用repaint()更快的速度和更少的闪烁。

几次调用update()的结果通常仅仅是一次paintEvent()调用。

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

Qt通常在paintEvent()调用之前擦除这个窗口部件的区域。仅仅只有在WRepaintNoErase窗口部件标记被设置的时候,窗口部件本身对绘制它所有的像素负有责任。

 

也可以参考repaint(), paintEvent(), updatesEnabled and erase().

void QWidget::update ( const QRect & r ) [槽]

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

更新窗口部件中的矩形r,除非更新已经失效或者窗口部件被隐藏。

这个函数不会导致一个立刻的重新绘制——更正确的是,当Qt回到主事件回路中时,它规划了所要处理的绘制事件。这样允许Qt来优化得到比调用repaint()更快的速度和更少的闪烁。

几次调用update()的结果通常仅仅是一次paintEvent()调用。

void QWidget::updateGeometry ()

把这个窗口部件已经改变并且也许需要改变几何形状通告给布局系统。

如果sizeHint()或sizePolicy()已经发生变化,请调用这个函数。

对于明确隐藏的窗口部件,updateGeometry()是没有操作的。只要这个窗口部件一显示出来,布局系统就将被通告。

void QWidget::updateMask () [虚 保护]

这个函数可以在子类中被重新实现来支持透明窗口部件。只要窗口部件改变状态,形状面具不得不被重新计算,它就会被调用。

 

也可以参考autoMasksetMask()和clearMask()。

QRect QWidget::visibleRect () const

返回窗口部件的当前可见矩形。详细情况请参考“visibleRect”属性。

void QWidget::wheelEvent ( QWheelEvent * e ) [虚 保护]

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

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

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

 

也可以参考QWheelEvent::ignore()、QWheelEvent::accept()、event()和QWheelEvent

int QWidget::width () const

返回不包含任何窗口框架的窗口部件宽度。详细情况请参考“width”属性。

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

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

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

警告:这个函数不能移植。

 

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

WId QWidget::winId () const

返回窗口部件的窗口系统标识符。

原则上是可以移植的,但是如果使用了它,一定是做了一些不可移植的事情。请留心。

 

也可以参考find()。

实例:mainlyXt/editor.cpp.

void QWidget::windowActivationChange ( bool oldActive ) [虚 保护]

当窗口部件的窗口被窗口系统激活或者停用,这个虚函数被调用。oldActive是原来的状态,你可以通过isActiveWindow()得到新的设置。

如果你的窗口部件需要知道什么时候它的窗口变为激活或停用,请重新实现这个函数。

如果停止和激活颜色组不同与高亮和连接颜色,默认实现更新这个窗口部件的可视部分。

 

也可以参考setActiveWindow()、isActiveWindowupdate()和palette

int QWidget::x () const

返回包括任何窗口框架的相对于它的父窗口部件的这个窗口部件的x坐标。详细情况请参考“x”属性。

bool QWidget::x11Event ( XEvent * ) [虚 保护]

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

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

警告:这个函数不能移植。

 

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

QXtWidget中被重新实现。

int QWidget::y () const

返回包括任何窗口框架的相对于它的父窗口部件的这个窗口部件的y坐标。详细情况请参考“y”属性。


属性文档

bool acceptDrops

这个属性保存的是窗口部件中放下事件是否有效。

设置这个属性为真告诉系统这个窗口部件可以能够接收放下事件。

如果窗口部件是桌面(QWidget::isDesktop()),如果其它应用程序正在使用桌面,这也许会失败,你可以调用acceptDrops()来测试这种情况是否发生。

通过setAcceptDrops()可以设置属性值并且通过acceptDrops()来获得属性值。

bool autoMask

这个属性保存的是窗口部件中自动面具特征是否有效。

透明窗口部件使用面具来定义它们的可视区域。QWidget有一些内置的支持可以使重新计算面具的任务更容易。当设置自动面具为真,只要窗口部件改变大小或者改变它的焦点状态updateMask()就将会被调用。注意你必须重新实现updateMask()(其中应该包含一个setMask()的调用)或者什么都不会发生。

注意:当你在你的自定义窗口部件中被重新实现resizeEvent()、focusInEvent()或focusOutEvent()时并且还想确认自动面具计算工作,你应该在你的事件处理函数的后面添加:

 

    if ( autoMask() )
        updateMask();
  

对于所有改变窗口部件的外观,都需要一个重新计算的面具,这都是真的。

虽然面具是一个技术上很吸引人的概念,但是他有一个很大的缺点:当使用复杂的不能被很容易地使用相对简单的区域表达的面具时,它们在一些窗口系统中很慢。经典的实例就是透明的标签。它的内容的复杂形状使它需要用一个位图重新描述它的面具,这将会消耗内存和事件。如果你想让几个临近的窗口部件的背景没有缝隙的融合在一起,你也许想使用的是setBackgroundOrigin(),而不是面具。

 

也可以参考updateMask()、setMask()、clearMask()和backgroundOrigin

通过setAutoMask()可以设置属性值并且通过autoMask()来获得属性值。

QBrush backgroundBrush

这个属性保存的是窗口部件的背景画刷。

背景画刷依赖于窗口部件的调色板和它的背景模式。

 

也可以参考backgroundColor()、backgroundPixmap()、eraseColor()、paletteQApplication::setPalette()。

通过backgroundBrush()来获得属性值。

BackgroundMode backgroundMode

这个属性保存的是绘制窗口部件背景所使用的颜色模式。

setPaletteBackgroundColor()读取这个属性来决定palette中的哪一个被设置。

对于绝大多数出口部,默认的就足够了(PaletteBackground,通常是灰色),但是一些需要使用PaletteBase(文本输出的背景,通常是白色)或者其它模式。

凹陷的QListBox并且为了和它的环境形成对照使用基本色,在构造函数中这样做:

 

    setBackgroundMode( PaletteBase );
    

对于Qt内置的窗口部件,你永远都不需要为它们设置背景模式,但是你也许需要在你的自定义窗口部件中考虑设置一下,这样setPaletteBackgroundColor()就可以像被期待地那样工作。

注意对于setBackgroundMode()中的两个背景模式值,名为FixedPixmapFixedColor,没有什么意义。你必须调用setBackgroundPixmap()和setPaletteBackgroundColor()来替代。

通过setBackgroundMode()可以设置属性值并且通过backgroundMode()来获得属性值。

BackgroundOrigin backgroundOrigin

这个属性保存的是窗口部件的背景的原点。

这个原点是WidgetOrigin(默认)、ParentOrigin和WindowOrigin其中之一。

只有在窗口部件有一个背景像素映射,对于定位有所不同。使用WindowOrigin,临近的几个窗口部件的背景会融合的很好好像没有缝隙一样。

 

也可以参考backgroundPixmap()和backgroundMode

通过setBackgroundOrigin()设置属性值并且通过backgroundOrigin()来获得属性值。

QSize baseSize

这个属性保存的是窗口部件的基础大小。

如果窗口部件定义了sizeIncrement(),基础大小就被用来计算一个确切的窗口部件大小。

 

也可以参考sizeIncrement

通过setBaseSize()设置属性值并且通过baseSize()来获得属性值。

QString caption

This property holds the window caption (title). 这个属性保存的是窗口标题。

这个属性只对顶级窗口部件有用。如果没有标题被设置,标题就为QString::null

 

也可以参考icon and iconText

通过setCaption()可以设置属性值并且通过caption()来获得属性值。

QRect childrenRect

这个属性保存的是窗口部件的子对象的边界矩形。

隐藏的子对象除外。

 

也可以参考childrenRegiongeometry

通过childrenRect()来获得属性值。

QRegion childrenRegion

这个属性保存的是窗口部件的子对象所占用的组合区域。

隐藏的子对象除外。

 

也可以参考childrenRectgeometry

通过childrenRegion()来获得属性值。

QColorGroup colorGroup

This property holds the current color group of the widget palette. 这个属性保存的是窗口部件调色板的当前颜色组。

颜色组由窗口部件的状态决定。一个失效的窗口部件是QPalette::disabled()颜色组,一个有键盘焦点的窗口部件是QPalette::active()颜色组,一个停止的窗口部件是QPalette::inactive()颜色组。

 

也可以参考palette

通过colorGroup()来获得属性值。

QCursor cursor

这个属性保存的是窗口部件的光标外形。

当鼠标在窗口部件之上时,鼠标光标将采用这个外形。对于可以使用的外形的范围请参考预定义的光标对象列表

一个编辑器窗口部件也许使用I形光标:

        setCursor( IbeamCursor );
    

如果没有光标被设置,或者在调用unsetCursor()之后,父对象的光标被使用。函数unsetCursor()对于顶级窗口部件没有效果。

 

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

通过setCursor()设置属性值,通过cursor()来获得属性值并且通过unsetCursor()重置属性值。

bool customWhatsThis

这个属性保存的是窗口部件是否手动处理“这是什么”的帮助。

customWhatsThis()的默认实现返回假,这也就是说窗口部件在“这是什么”状态将不接受任何事件。

通过调用QWhatsThis::leaveWhatsThisMode(),不管有没有任何实际显示的帮助文本,窗口部件会离开“这是什么”模式。

如果你的窗口部件是一个“被动的内部行动者”,假设在所有环境下工作时,你也许要重新实现customWhatsThis()。

 

也可以参考QWhatsThis::inWhatsThisMode()和QWhatsThis::leaveWhatsThisMode()。

通过customWhatsThis()来获得属性值。

bool enabled

这个属性保存的是窗口部件是否有效。

一个有效的窗口部件接收键盘和鼠标事件,一个失效的窗口部件不能。实际上,有效的窗口部件只有在它处于焦点时才接收键盘事件。

一些窗口部件当它们被失效的时候,显示得不同。例如,一个按钮也许把它的标签变灰。如果你的窗口部件需要知道它什么时候生效或失效,你可以重新实现enabledChange()函数。

使一个窗口部件失效就隐含地使它所有的子对象失效。使一个窗口部件生效就会逐个把它的子窗口部件生效,除非它们被明确地失效。

 

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

通过setEnabled()设置属性值并且通过isEnabled()来获得属性值。

bool focus

这个属性保存的是窗口部件(或者它的焦点代理)是否得到键盘输入焦点。

实际上等价于qApp->focusWidget() == this

 

也可以参考setFocus()、a href="#clearFocus">clearFocus()、focusPolicyQApplication::focusWidget()。

通过hasFocus()来获得属性值。

bool focusEnabled

这个属性保存的是窗口部件是否接收键盘焦点

键盘焦点初始状态是失效的(比如,focusPolicy() == QWidget::NoFocus)。

如果一个窗口部件处理键盘事件,你必须为它使键盘焦点生效。这通常在窗口部件的构造函数中完成。例如,QLineEdit的构造函数调用setFocusPolicy(QWidget::StrongFocus)。

 

也可以参考focusPolicyfocusInEvent()、focusOutEvent()、keyPressEvent()、keyReleaseEvent()和enabled

通过isFocusEnabled()来获得属性值。

FocusPolicy focusPolicy

这个属性保存的是窗口部件接收键盘焦点的策略。

如果窗口部件通过tab来接收键盘焦点,这个策略就是QWidget::TabFocus;如果窗口部件通过点击来接收键盘焦点,这个策略就是QWidget::ClickFocus;如果窗口部件上述两种方式都使用,是QWidget::StrongFocus;并且如果它不接收焦点(QWidget的默认值),是QWidget::NoFocus。

如果一个窗口部件处理键盘事件,你必须为它使键盘焦点生效。这通常在窗口部件的构造函数中完成。例如,QLineEdit的构造函数调用setFocusPolicy(QWidget::StrongFocus)。

 

也可以参考focusEnabledfocusInEvent()、focusOutEvent()、keyPressEvent()、keyReleaseEvent()和enabled

通过setFocusPolicy()设置属性值并且通过focusPolicy()来获得属性值。

QFont font

这个属性保存的是窗口部件当前的字体集。

fontInfo()函数报告这个窗口部件所用的实际字体。

只要没有特定字体被设置,或者在unsetFont()被调用之后,那么这个窗口部件类使用父窗口部件的字体或者(如果这个窗口部件是顶级窗口部件)使用默认应用程序字体。

这段代码设置12点的helvetica粗字体:

    QFont f( "Helvetica", 12, QFont::Bold );
    setFont( f );
    

另外设置字体时,setFont()通知所有子对象关于这个变化。

 

也可以参考fontChange()、fontInfo()、fontMetrics()和ownFont

通过setFont()设置属性值,通过font()来获得属性值并且通过unsetFont()重置属性值。

QRect frameGeometry

这个属性保存的是相对于它的父对象包含任何窗口框架的窗口部件的几何形状。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考geometryx、a href="#y-prop">y和pos

通过frameGeometry()来获得属性值。

QSize frameSize

这个属性保存的是包含任何窗口框架的窗口部件的大小。

通过frameSize()来获得属性值。

QRect geometry

这个属性保存的是相对于它的父对象不包括窗口框架的窗口部件的几何形状。

当窗口部件改变几何形状时,如果它是可视的,它立即接收到一个移动事件(moveEvent())和/或一个重定义大小(resizeEvent())。如果它当前不是可视的,它被保证会在被显示之前接收到适当的事件。

如果它在由minimumSize()和maximumSize()定义的范围之外,大小组件被调整。

setGeometry()是虚的,并且所有Qt中其它重载setGeometry()的重新实现调用它。

警告:在resizeEvent()或moveEvent()中调用setGeometry()会导致无限循环。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考frameGeometryrectpossizemoveEvent()、resizeEvent()、minimumSizemaximumSize

通过setGeometry()设置属性值并且通过geometry()来获得属性值。

int height

这个属性保存的是不包括窗口框架的窗口部件的高度。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考geometrywidthsize

通过height()来获得属性值。

bool hidden

这个属性保存的是窗口部件是否明确地隐藏。

如果为假,这个窗口部件是可视的或者如果它的所有祖先变为可视,它将变为可视的。

 

也可以参考hide()、show()、visibleisVisibleTo()。

通过isHidden()来获得属性值。

QPixmap icon

这个属性保存的是窗口部件图标像素映射。

这个属性只对顶级窗口部件有效。如果没有图标被设置,icon()返回0。

 

也可以参考iconTextcaption设置应用程序图标

通过setIcon()设置属性值并且通过icon()来获得属性值。

QString iconText

这个属性保存的是窗口部件图标文本。

这个属性只对顶级窗口部件有效。如果没有图标文本被设置,这个函数返回QString::null

 

也可以参考iconcaption

通过setIconText()设置属性值并且通过iconText()来获得属性值。

bool isActiveWindow

这个属性保存的是窗口部件或者它的一个子对象是否是活动窗口。

活动窗口是有键盘焦点的窗口

当弹出窗口是可视的,这个属性对于活动窗口这个弹出窗口都是真。

 

也可以参考setActiveWindow()和QApplication::activeWindow()。

通过isActiveWindow()来获得属性值。

bool isDesktop

这个属性保存的是窗口部件是否是桌面窗口部件,比如,代表桌面。

一个桌面窗口部件也是顶级窗口部件。

 

也可以参考isTopLevelQApplication::desktop()。

通过isDesktop()来获得属性值。

bool isDialog

这个属性保存的是窗口部件是否是对话框窗口部件。

对话框窗口部件是次要的顶级窗口部件,比如一个有父对象的顶级窗口部件。

 

也可以参考isTopLevelQDialog

通过isDialog()来获得属性值。

bool isModal

这个属性保存的是窗口部件是否是模式窗口部件。

这个属性只对顶级窗口部件有效。一个模式窗口部件防止对其它所有顶级窗口部件得到任何输入。

 

也可以参考isTopLevelisDialogQDialog

通过isModal()来获得属性值。

bool isPopup

这个属性保存的是窗口部件是否是弹出窗口部件。

一个弹出窗口部件是在窗口部件的构造函数中使用窗口部件标记WType_Popup创建的。一个弹出窗口部件也是一个顶级窗口部件。

 

也可以参考isTopLevel

通过isPopup()来获得属性值。

bool isTopLevel

This property holds whether the widget is a top-level widget. 这个属性保存的是窗口部件是否是顶级窗口部件。

顶级窗口部件通常有框架和标题弹出桌面窗口部件也是顶级窗口部件。

顶级窗口部件可以有父窗口部件。然后它和它的父窗口部件就形成一个组并且当它的父对象被删除或最小化等等时,它也被删除或最小化等等。如果被窗口部件支持的话,它和它的父对象一样也有一个普通任务栏条目。

QDialogQMainWindow窗口部件默认是顶级的,尽管在构造函数中被指定一个父窗口部件。这个行为是由WType_TopLevel窗口部件标记指定的。

 

也可以参考topLevelWidget()、isDialogisModalisPopupisDesktopparentWidget()。

通过isTopLevel()来获得属性值。

int maximumHeight

这个属性保存的是窗口部件的最大高度。

这个属性和maximumSize().height()一致。

 

也可以参考maximumSizemaximumWidth

通过setMaximumHeight()设置属性值并且通过maximumHeight().来获得属性值。

QSize maximumSize

这个属性保存的是窗口部件的最大大小。

这个窗口部件不能被重定义为比这个最大大小更大的大小了。

 

也可以参考maximumWidthmaximumHeightmaximumSizeminimumSizesizeIncrement

通过setMaximumSize()设置属性值并且通过maximumSize()来获得属性值。

int maximumWidth

这个属性保存的是窗口部件的最大宽度。

这个属性和maximumSize().width()一致。

 

也可以参考maximumSizemaximumHeight

通过setMaximumWidth()设置属性值并且通过maximumWidth()来获得属性值。

QRect microFocusHint

这个属性保存的是窗口部件的当前设置的微焦点提示。

更多信息请参考setMicroFocusHint()的文档。

通过microFocusHint()来获得属性值。

bool minimized

这个属性保存的是窗口部件是否是最小化的(变为图标了)。

这个属性和顶级窗口部件相关。

 

也可以参考showMinimized()、visibleshow()、hide()和showNormal()。

通过isMinimized()来获得属性值。

int minimumHeight

这个属性保存的是窗口部件的最小高度。

这个属性和minimumSize().height()一致。

 

也可以参考minimumSizeminimumWidth

通过setMinimumHeight()设置属性值并且通过minimumHeight()来获得属性值。

QSize minimumSize

这个属性保存的是窗口部件的最小大小。

这个窗口部件不能被重定义比这个最小大小更小的大笑了。如果当前大小更小的话,窗口部件的大小被强制为最小大小。

如果你在这个窗口部件中使用了布局,最小大小将会被这个布局设置,而不是setMinimumSize(),除非你设置布局的重定义大小模式为QLayout::FreeResize。

 

也可以参考minimumWidthminimumHeightmaximumSizesizeIncrementQLayout::resizeMode

通过setMinimumSize()设置属性值并且通过minimumSize()来获得属性值。

QSize minimumSizeHint

这个属性保存的是建议的窗口部件最小大小。

如果这个属性值是无效的大小,那么就没有被建议的最小大小了。

如果这个窗口部件中没有布局,minimumSizeHint()默认实现返回无效大小并且否则的话返回布局的最小大小。绝大多数内置窗口部件重新实现了minimumSizeHint()。

QLayout从来不会重定义窗口部件大小小于minimumSizeHint。

 

也可以参考QSize::isValid()、sizeminimumSizesizePolicy

通过minimumSizeHint()来获得属性值。

int minimumWidth

这个属性保存的是窗口部件的最小宽度。

这个属性和minimumSize().width()一致。

 

也可以参考minimumSizeminimumHeight

通过setMinimumWidth()设置属性值并且通过minimumWidth()来得到属性值。

bool mouseTracking

这个属性保存的是窗口部件跟踪鼠标是否生效。

如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标按键被按下时,这个窗口部件才会接收鼠标移动事件。

如果鼠标跟踪生效,如果没有按键被按下,这个窗口部件也会接收鼠标移动事件。

 

也可以参考mouseMoveEvent()和QApplication::setGlobalMouseTracking()。

通过setMouseTracking()设置属性值并且通过hasMouseTracking()来获得属性值。

bool ownCursor

这个属性保存的是窗口部件是否使用它自己的光标。

如果为假,这个窗口部件使用它父窗口部件的光标。

 

也可以参考cursor

通过ownCursor()来获得属性值。

bool ownFont

这个属性保存的是窗口部件是否使用它自己的字体。

如果为假,这个窗口部件使用它父窗口部件的字体。

 

也可以参考font

通过ownFont()来获得属性值。

bool ownPalette

这个属性保存的是窗口部件是否使用它自己的调色板。

如果为假,这个窗口部件使用它父窗口部件的调色板。

 

也可以参考palette

通过ownPalette()来获得属性值。

QPalette palette

这个属性保存的是窗口部件的调色板。

只要没有特定的调色板被设置,或者在unsetPalette()被调用之后,这个窗口部件的特定调色板就是父窗口部件的调色板或者(如果这个窗口部件是顶级窗口部件)默认的应用程序调色板。

可以替代定义整个新的调色板的,你也可以使用paletteBackgroundColorpaletteBackgroundPixmappaletteForegroundColor方便的属性来只改变窗口部件的背景和前景外观。

 

也可以参考ownPalettecolorGroupQApplication::palette()。

通过setPalette()设置属性值,通过palette()来获得属性值并且通过unsetPalette()重置属性值。

QColor paletteBackgroundColor

这个属性保存的是窗口部件的背景色。

这个调色板背景色通常被setBackgroundMode()隐含地设置,尽管它也可以由setPaletteBackgroundColor()明显地设置。setPaletteBackgroundColor()是一个创建和设置通过setPalette()修改过的QPalette方便函数。这个调色板根据窗口部件的背景模式被修改。例如,如果背景模式是PaletteButton,调色板的QColorGroup::Button颜色条目所用的颜色被设置。

如果有一个背景像素映射(使用setPaletteBackgroundPixmap()设置的),那么这个函数的返回值是不确定的。

 

也可以参考paletteBackgroundPixmappaletteForegroundColorpalettecolorGroup

通过setPaletteBackgroundColor()设置属性值,通过paletteBackgroundColor()来获得属性值并且通过unsetPalette()重置属性值。

QPixmap paletteBackgroundPixmap

这个属性保存的是窗口部件的背景像素映射。

这个调色板背景像素映射通常被setBackgroundMode()隐含地设置,尽管它也可以由setPaletteBackgroundPixmap()明显地设置。setPaletteBackgroundPixmap()是一个创建和设置通过setPalette()修改过的QPalette方便函数。这个调色板根据窗口部件的背景模式被修改。例如,如果背景模式是PaletteButton,调色板的QColorGroup::Button颜色条目所用的像素映射被设置。

如果有一个简单的背景颜色(使用setPaletteBackgroundColor()设置的),那么这个函数返回0。

 

也可以参考paletteBackgroundColorpaletteForegroundColorpalettecolorGroup

通过setPaletteBackgroundPixmap()设置属性值,通过paletteBackgroundPixmap()来获得属性值并且通过unsetPalette()重置属性值。

QColor paletteForegroundColor

这个属性保存的是窗口部件的前景色。

setPaletteForegroundColor()是一个创建和设置通过setPalette()修改过的QPalette方便函数。这个调色板根据窗口部件的背景模式被修改。例如,如果背景模式是PaletteButton,调色板的QColorGroup::ButtonText颜色条目所用的颜色被设置。

 

也可以参考paletteQApplication::setPalette()、backgroundModeforegroundColor()、backgroundModesetEraseColor()。

通过setPaletteForegroundColor()设置属性值,通过paletteForegroundColor()来获得属性值并且通过unsetPalette().重置属性值。

QPoint pos

这个属性保存的是窗口部件在它的父窗口部件中的位置。

如果这个窗口部件是顶级窗口部件,那它的位置就是在桌面上包括它的框架的窗口部件的位置。

当改变位置时,这个窗口部件如果可视,会立即接收一个移动事件(moveEvent())。如果这个窗口部件当前不是可视的,它被保证会在它被显示之前收到这个事件。

move()是虚函数,并且Qt中所有其它重载move()的重新实现都调用它。

警告:在moveEvent()调用move()或setGeometry()会导致无限循环。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考frameGeometrysizexy

通过move()设置属性值并且通过pos()来获得属性值。

QRect rect

这个属性保存的是不包含任何窗口框架的窗口部件的内部几何形状。

这个矩形属性等于QRect(0, 0, width(), height())。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考size

通过rect()来获得属性值。

QSize size

这个属性保存的是不包含任何窗口框架的窗口部件的大小。

当重新定义大小时,这个窗口部件如果可视,会立即收到一个重新定义大小事件(resizeEvent())。如果这个窗口部件当前不是可视的,它被保证会在它被显示之前收到这个事件。

如果这个大小在minimumSize()和a href="#maximumSize">maximumSize()定义的范围之外,它被调整。此外,这个大小总是至少为QSize(1, 1)。

resize()是虚函数,并且Qt中所有其它重载resize()的重新实现都调用它。

警告:在resizeEvent()调用resize()或setGeometry()会导致无限循环。

 

也可以参考posgeometryminimumSizemaximumSizeresizeEvent()。

通过resize()设置属性值并且通过size()来获得属性值。

QSize sizeHint

这个属性保存的是建议的窗口部件大小。

如果这个属性值是无效的大小,那么就没有大小被建议。

如果这个窗口部件没有布局,sizeHint()的默认实现返回一个无效大小,并且否则的话就返回布局的首选大小。

 

也可以参考QSize::isValid()、minimumSizeHintsizePolicyminimumSizeupdateGeometry()。

通过sizeHint()来获得属性值。

QSize sizeIncrement

这个属性保存的是窗口部件的大小增量。

当用户重新定义窗口的大小时,大小会在水平方向上按sizeIncrement().width()像素和垂直方向上按sizeIncrement.height()像素来逐步变化,基础大小为baseSize() 。首选的窗口部件大小为非负整数ij

        width = baseSize().width() + i * sizeIncrement().width();
        height = baseSize().height() + j * sizeIncrement().height();
    

注意,当你为所有的窗口部件设置大小增量时,它只对顶级窗口部件有效。

警告:大小增量在Windows下没有效果,并且也许会被X上的窗口管理器忽视。

 

也可以参考sizeminimumSizemaximumSize

通过setSizeIncrement()设置属性值并且通过sizeIncrement()来获得属性值。

QSizePolicy sizePolicy

这个属性保存的是窗口部件的默认布局行为。

如果有一个QLayout管理这个窗口部件的子对象,这个大小策略由布局使用的大小策略指定。如果没有这样的QLayout,那么这个函数的结果被使用。

默认策略是首选/首选,也就是说窗口部件可以被自由地重新定义大小,但是首选的是sizeHint()返回的大小。具有按钮特征的窗口部件设置它们的大小策略为水平方向可以伸展,但垂直方向固定。这同样适用于行编辑控件(比如QLineEditQSpinBox或可编辑的QComboBox)和其它水平方向的窗口部件(比如QProgressBar)。QToolButton的大小策略通常是允许两个方向都可以变化。支持不同方向的窗口部件(比如QSliderQScrollBarQHeader)仅仅按被指定的方向变化。可以提供滚动条的窗口部件(通常是QScrollView的子类)趋向于指定它们可以使用额外的空间,并且它们可以在小于sizeHint()时正常工作。

 

也可以参考sizeHintQLayoutQSizePolicyupdateGeometry()。

通过setSizePolicy()设置属性值并且通过sizePolicy()来获得属性值。

bool underMouse

这个属性保存的是窗口部件是否在鼠标光标下。

这个值在拖放操作期间不会被完全地更新。

 

也可以参考QEvent::EnterQEvent::Leave

通过hasMouse()来获得属性值。

bool updatesEnabled

这个属性保存的是更新是否生效。

如果更新失效,调用update()和repaint()是没有效果的。如果更新失效,来自窗口系统的绘制事件会被正常处理。

setUpdatesEnabled()通常被用于在一小段事件内使更新失效,例如为了避免在大的变化期间发生屏幕闪烁。

实例:

    setUpdatesEnabled( FALSE );
    bigVisualChanges();
    setUpdatesEnabled( TRUE );
    repaint();
  

 

也可以参考update()、repaint()和paintEvent()。

通过setUpdatesEnabled()设置属性值并且通过isUpdatesEnabled()来获得属性值。

bool visible

这个属性保存的是窗口部件是否可视。

如果窗口部件的父窗口部件直到顶级窗口部件是可视的,调用show()设置它为可视的。如果有一个祖先是不可视的,直到它的所有祖先被显示时,这个窗口部件才会变为可视。

调用hide()明显地隐藏一个窗口部件。一个明显地被隐藏的窗口部件永远不会被变为可视,尽管它的所有祖先都变为可视,除非你显示它。

图标化的顶级窗口部件也处在隐藏状态,也就是isMinimized()返回真。存在于另一个虚拟桌面上的窗口(在一些支持这个概念的平台上)也处在隐藏状态。

一个窗口部件会因为屏幕上其它可视的窗口部件而变暗。

当窗口部件的可视状态发生变化时,它接收显示和隐藏事件。隐藏和显示事件都不需要浪费CPU在准备或显示信息给用户。例如,一个视频应用程序也许只是简单地停止产生新的帧。

 

也可以参考show(), hide()、hiddenisVisibleTo()、minimizedshowEvent()和hideEvent()。

通过isVisible()来获得属性值。

QRect visibleRect

这个属性保存的是窗口部件的当前可视矩形。

这个属性对于优化窗口部件的立即重新绘制很有用。典型用法是:

    repaint( w->visibleRect() );
  

    repaint( w->visibleRect(), FALSE );
  

如果没有什么是可视的,这个返回的矩形为空。

通过visibleRect()来获得属性值。

int width

这个属性保存的是不包含任何窗口框架的窗口部件宽度。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考geometryheightsize

通过width()来获得属性值。

int x

这个属性保存的是相对于它的父对象包含任何窗口框架的窗口部件的x坐标。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考frameGeometryypos

通过x()来获得属性值。

int y

这个属性保存的是相对于它的父对象包含任何窗口框架的窗口部件的y坐标。

对于顶级窗口部件的几何形状的概述请参考窗口几何形状文档

 

也可以参考frameGeometryxpos

通过y()来获得属性值。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。

 


Copyright © 2002

 

原文链接:  http://www.kuqin.com/qtdocument/qwidget.html