qwidget_zh
2022-04-07 14:39:54

Class::QWidget

暂无该属性


Detailed Description

QWidget 是所有用户界面对象的基类。 控件是用户界面的基本单元:它从窗口系统接收鼠标、键盘和其它事件,并在屏幕上绘制自己。每个控件都是矩形的,并且按照 Z-order 顺序排序。控件可以被它的父窗口以及它上层的控件管理。

一个没有嵌入到父窗口的控件被称为一个窗口。通常,窗口会包含边框和标题栏,虽然使用合适的 Qt::WindowFlags 属性也可以创建一个没有边框和标题栏的窗口。在 Qt 中, QMainWindow 和各种类型 QDialog 是最常见的窗口类型。

每个控件的构造通常会接收一个或者两个标准参数:

  1. QWidget *parent = nullptr是新建控件的父类。如果它为空(默认),那么这个新建控件将称为一个主窗口。如果不为空,它将成为父窗口中的一个子类控件,被父窗口的布局约束(除非指定 Qt::Window 作为窗口类型)。
  2. Qt::WindowFlags f = { }(如果有)设置窗口属性;默认值适用于几乎所有的控件,但是有例外,比如窗口不需要系统边框的时候,必须设置一个明确的属性。

QWidget 有很多成员函数,但是其中一些没有直接功能;例如, QWidget 具有font属性,但从未使用过。很多子类实现了真正的功能,例如 QLabelQPushButtonQListWidgetQTabWidget

顶层窗口和子窗口控件

没有父窗口的控件总是一个独立的窗口(顶层控件)。对于这些控件,使用 setWindowTitle() 函数和 setWindowIcon() 函数分别设置其标题栏和图标。

没有窗口的控件是子控件,在它们的父窗口上面显示。在 Qt 中大量的控件作为子控件使用。例如,可以将一个按钮作为顶级窗口来显示,但大多数人更喜欢将按钮放在其它窗口部件内,例如 QDialog

上图显示了 QGroupBox 控件使用 QGridLayout 提供的布局保存各种子控件。 QLabel 子窗口控件显示完整大小。

想要使用一个顶层窗口 QWidget 展示子控件,通常是在父级窗口 QWidget 中添加一个布局。请参见 Layout Management 获取更多的信息。

组合控件

当多个子控件组合成一个控件时,这种控件被称为组合控件。可以通过构建一个具有所需视觉属性的部件--例如 QFrame --并向其添加子部件来创建,通常由一个布局管理。上图显示了这样一个使用 Qt 设计器创建的组合控件。

还可以通过子类化标准小部件(例如 QWidgetQFrame )来创建复合小部件。并在子类的构造函数中添加必要的布局和子窗口小部件。 Qt Widgets Examples 都使用这种方法,并且 Qt Tutorials 中也对此进行了介绍。

自定义小部件和绘画

由于 QWidgetQPaintDevice 的子类,子类可用于显示自定义内容,该内容是使用一系列绘画操作以及 QPainter 类的实例组成的。这种方法与“图形视图” Graphics View 框架使用的画布样式方法形成对比,在图形视图框架中,项目由应用程序添加到场景中,并由框架本身进行渲染。

每个小部件都从其 paintEvent() 函数内执行所有绘画操作。由于某些外部更改或应应用程序的要求,每当需要重绘窗口小部件时都会调用此方法。

模拟时钟示例 widgets/analogclock 显示了一个简单的小部件如何处理绘制事件。

窗口小部件默认大小和策略

实现新的窗口小部件时,重新实现 sizeHint() 为窗口小部件提供合理的默认大小并使用 setSizePolicy() 设置正确的大小策略几乎总是有用的。

默认情况下,不提供默认大小的复合窗口小部件,其将根据其子窗口小部件的空间要求来调整大小。

大小策略可以为布局管理系统提供良好的默认行为,以便其它小部件可以轻松地包含和管理小部件。默认的大小策略指示 size hint 代表小部件的首选大小,这对于许多小部件通常足够好。

注意:顶层小部件的大小限制为桌面高度和宽度的2/3。如果这些范围不足,可以手动调整 resize() 窗口小部件的大小。

事件

窗口小部件响应通常由用户操作引起的事件。Qt 通过使用包含有关每个事件信息的 QEvent 子类的实例调用特定的事件处理函数来将事件传递给窗口小部件。

如果窗口小部件仅包含子窗口小部件,则可能不需要实现任何事件处理程序。如果要检测鼠标单击子窗口小部件,请在窗口小部件的 mousePressEvent() 中调用子窗口的 underMouse() 函数。

widgets/scribble 实现了一系列事件,以处理鼠标移动,按钮按下和窗口大小调整。

需要提供窗口小部件的行为和内容,但是这里是与 QWidget 相关事件的简要概述,从最常见的事件开始:

  • 每当需要重新绘制小部件时,都会调用 paintEvent() 。 每个显示自定义内容的窗口小部件都必须实现它。 使用 QPainter 的绘画只能在 paintEvent()paintEvent() 调用的函数中进行。
  • 调整窗口小部件的大小后,将调用 resizeEvent()
  • 当鼠标光标位于窗口小部件内时,或者当窗口小部件使用 grabMouse() 抓住鼠标时,按下鼠标按钮时,将调用 mousePressEvent() 。 在不释放鼠标的情况下按下鼠标实际上与调用 grabMouse() 相同。
  • 释放鼠标按钮时,将调用 mouseReleaseEvent() 。当窗口小部件收到相应的鼠标按下事件时,它将接收鼠标释放事件。 这意味着,如果用户在your小部件内按下鼠标,然后在释放鼠标按钮之前将鼠标拖到其它位置,则your小部件会收到释放事件。有一个例外:如果在按住鼠标按钮的同时出现弹出菜单,则该弹出窗口会立即窃取鼠标事件。
  • 当用户双击窗口小部件时,将调用 mouseDoubleClickEvent() 。 如果用户双击,则小部件会收到一个鼠标按下事件,一个鼠标释放事件,(一个鼠标点击事件),第二次鼠标按下,该事件以及最后一个第二次鼠标释放事件。(如果在此操作期间鼠标未保持稳定,则可能还会收到一些鼠标移动事件。)在第二次单击到达之前,not possible无法将单击与双击区分开。 (这就是为什么大多数 GUI 书籍都建议双击是单击的扩展,而不是触发其它操作的原因之一。)

接受键盘输入的小部件需要重新实现一些事件处理程序:

  • 每当按下某个按键时,就会调用 keyPressEvent() ,并在按住该按键足够长的时间以使其自动重复时再次调用。Tab 和 Shift+Tab 键仅在焦点更改机制未使用时才传递给窗口小部件。要强制这些键由窗口小部件处理,必须重新实现。 QWidget::event()
  • 当窗口小部件获得键盘焦点时会调用 focusInEvent() (假设已调用 setFocusPolicy() )。行为良好的小部件表示它们以清晰但谨慎的方式拥有键盘焦点。
  • 当窗口小部件失去键盘焦点时,将调用 focusOutEvent()

可能还需要重新实现一些不太常见的事件处理程序:

  • 只要在按住鼠标按钮的同时移动鼠标,就会调用 mouseMoveEvent() 。这在拖放操作期间很有用。如果调用 setMouseTracking() ,即使没有按下任何按钮,也将获得鼠标移动事件。(另请参见拖放 Drag and Drop 指南。)
  • 每当释放键并按住键时(如果键是自动重复的),都会调用 keyReleaseEvent() 。在这种情况下,小部件每次重复都会收到一对按键释放和按键事件。Tab 和 Shift+Tab 键仅在焦点更改机制未使用时才传递给窗口小部件。要强制这些键由窗口小部件处理,必须重新实现 QWidget::event()
  • 每当用户在小部件具有焦点的情况下转动鼠标滚轮时,就会调用 wheelEvent()
  • 当鼠标进入小部件的屏幕空间时,将调用 enterEvent() 。 (这不包括窗口小部件的任何子级拥有的屏幕空间。)
  • 当鼠标离开窗口小部件的屏幕空间时,将调用 leaveEvent() 。 如果鼠标进入子窗口小部件,则不会导致 leaveEvent()
  • 当窗口小部件已相对于其父级移动时,将调用 moveEvent()
  • 当用户关闭窗口小部件时(或调用 close() 时),将调用 closeEvent()

QEvent::Type 文档中还描述了一些不太明显的事件。要处理这些事件,需要直接重新实现 event()

event() 的默认实现处理 Tab 和 Shift+Tab(以移动键盘焦点),并将其它大多数事件传递给上述更专业的处理程序之一。

事件及其传递机制在事件系统 The Event System 中介绍。

功能和属性组

内容

功能和属性

窗口功能

show()hide()raise()lower()close()

顶层窗口

windowModifiedwindowTitlewindowIconisActiveWindowactivateWindow()minimizedshowMinimized()maximizedshowMaximized()fullScreenshowFullScreen()showNormal()

窗口内容

update()repaint()scroll()

坐标系统

posx()y()rectsizewidth()height()move()resize()sizePolicysizeHint()minimumSizeHint()updateGeometry()layout()frameGeometrygeometrychildrenRectchildrenRegionadjustSize()mapFromGlobal()mapToGlobal()mapFromParent()mapToParent()maximumSizeminimumSizesizeIncrementbaseSizesetFixedSize()

状态

visibleisVisibleTo()enabledisEnabledTo()modalisWindow()mouseTrackingupdatesEnabledvisibleRegion()

外观和风格

style()setStyle()styleSheetcursorfontpalettebackgroundRole()setBackgroundRole()fontInfo()fontMetrics()

焦点函数

focusfocusPolicysetFocus()clearFocus()setTabOrder()setFocusProxy()focusNextChild()focusPreviousChild()

鼠标和键盘抓取

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()changeEvent()

系统功能

parentWidget()window()setParent()winId()find()metric()

上下文菜单

contextMenuPolicycontextMenuEvent()customContextMenuRequested()actions()

交互帮助

setToolTip()setWhatsThis()

小部件样式表

除了每个平台的标准窗口小部件样式外,还可以根据样式表 styleSheet 中指定的规则来设置窗口小部件的样式。此功能可以自定义特定小部件的外观,以向用户提供有关其用途的视觉提示。例如,可以以特定方式设置按钮样式,以指示其执行了破坏性操作。

“小部件样式表”的使用在“Qt 样式表” Qt Style Sheets 文档中有更详细的描述。

透明度和双重缓冲

从 Qt 4.0开始, QWidget 会自动对其绘画进行双缓冲,因此无需在 paintEvent() 中编写双缓冲代码来避免闪烁。

从 Qt 4.1开始,默认情况下,只要未设置 Qt::WA_PaintOnScreen ,父窗口小部件的内容就会传播到它们的每个子窗口。可以编写自定义窗口小部件以利用此功能,方法是更新不规则区域(以创建非矩形子窗口小部件),或者使用不完整 alpha 分量的颜色进行绘画。下图显示了如何微调自定义窗口小部件的属性以实现不同的效果。

在上图中,构造了一个删除区域的半透明矩形子窗口小部件,并将其添加到父窗口小部件(显示像素图的 QLabel )。然后,设置不同的属性和窗口小部件属性以实现不同的效果:

  • 左侧窗口小部件未设置其它属性或窗口小部件属性。此默认状态适合大多数使用透明度的自定义窗口小部件,形状不规则或不使用不透明的笔刷在其整个区域上绘制。
  • 中心窗口小部件已设置了 autoFillBackground 属性。此属性与依赖其提供默认背景的自定义窗口小部件一起使用,并且不使用不透明的笔刷在其整个区域上绘画。
  • 右侧窗口小部件已设置了 Qt::WA_OpaquePaintEvent 窗口小部件属性。这表明该小部件将使用不透明的颜色在其整个区域上绘画。窗口小部件的区域在开始是uninitialized,在图中以红色斜线网格图案表示,该图案在覆盖区域上发光。Qt::WA_OpaquePaintArea 属性对于需要快速绘制自己专用内容且不需要默认填充背景的小部件很有用。

要使用简单的背景颜色快速更新自定义窗口小部件,例如实时绘图或图形化窗口小部件,最好定义合适的背景颜色(使用带有 QPalette::Window 角色的 setBackgroundRole() ),设置 autoFillBackground 属性,并且仅在小部件的 paintEvent() 中实现必要的绘图功能。

在不断用不透明内容在其整个区域上绘画的自定义窗口小部件上,为了快速更新,例如视频流窗口小部件,最好设置窗口小部件的 Qt::WA_OpaquePaintEvent ,为了重新绘制窗口小部件的背景,应避免任何与其相关的不必要的开销。

如果小部件同时设置了 Qt::WA_OpaquePaintEvent 小部件属性andautoFillBackground 属性,则 Qt::WA_OpaquePaintEvent 属性具有优先权。根据要求,应该选择其中之一。

从 Qt 4.1开始,父窗口小部件的内容也传播到标准 Qt 小部件。如果父窗口小部件以非标准方式进行装饰,则可能导致某些意外结果,如下图所示。

自定义标准 Qt 小部件的绘画行为的范围(不求助于子类)比自定义小部件的范围要小一些。通常,可以通过设置标准窗口小部件的 autoFillBackground 属性来获得所需的外观。

创建半透明窗口

从 Qt 4.5开始,可以在支持合成的窗口系统上创建具有半透明区域的窗口。

要在顶级窗口小部件中启用此功能,请使用 setAttribute() 设置其 Qt::WA_TranslucentBackground 属性,并确保其背景在要部分透明的区域中涂有不透明的颜色。

平台说明:

  • X11:此功能依赖于使用支持 ARGB 视觉效果的 X 服务器和合成窗口管理器。
  • Windows:窗口小部件需要设置 Qt::FramelessWindowHint 窗口标志,以使半透明起作用。

本地小部件与外来部件

在 Qt 4.4中引入的外来窗口小部件是窗口系统未知的窗口小部件。它们没有与之关联的本机窗口句柄。此功能极大地加快了小部件绘制,调整大小并消除闪烁的速度。

如果需要本机窗口的旧行为,可以选择以下选项之一:

  1. 在环境中使用QT_USE_NATIVE_WINDOWS=1
  2. 在应用程序上设置 Qt::AA_NativeWindows 属性。所有小部件都是本地小部件。
  3. 在小部件上设置 Qt::WA_NativeWindow 属性:小部件本身及其所有父类将变为本地(除非设置了 Qt::WA_DontCreateNativeAncestors )。
  4. 调用 QWidget::winId 强制执行本地窗口(这意味着3)。
  5. 设置 Qt::WA_PaintOnScreen 属性以强制执行本地窗口(这意味着3)。

See also QEvent QPainter QGridLayout QBoxLayout

暂无该属性

[public macrowithoutparams  ]

QWIDGETSIZE_MAX 定义 QWidget 对象的最大大小。

小部件允许的最大大小是 QSize ( , ),即 QSize (16777215,16777215)。

See also QWidget::setMaximumSize()

QWidget::QWidget

[public constructor  ]

QWidget(QWidget *parent, Qt::WindowFlags f) 构造一个小部件,它是_parent_的子级,并将小部件标志设置为_f_。

如果_parent_为nullptr,则新窗口小部件将成为一个窗口。如果是另一个窗口小部件,则此窗口小部件将成为_parent_内部的子窗口。删除_parent_时,将删除新窗口小部件。

窗口小部件的 flags 参数_f_通常为0,但可以将其设置为自定义窗口的框架(即_parent_必须为nullptr)。要自定义框架,请使用由任何 Qt::WindowFlags 的按位“或”组成的值。

如果将子窗口小部件添加到已经可见的窗口小部件,则必须显式显示该子窗口以使其可见。

请注意,Qt 的 X11 版本可能无法在所有系统上提供样式标志的所有组合。这是因为在 X11 上,Qt 只能询问窗口管理器,并且窗口管理器可以覆盖应用程序的设置。在 Windows 上,Qt 可以设置所需的任何标志。

See also windowFlags

QWidget::QWidget

[private constructor  ]

QWidget(const QWidget &)

QWidget::QWidget

[private constructor  ]

QWidget(QWidgetPrivate &dd, QWidget *parent, Qt::WindowFlags f)

QWidget::acceptDrops

[public plain  ]

bool acceptDrops() const See also setAcceptDrops()

QWidget::accessibleDescription

[public plain  ]

QString accessibleDescription() const See also setAccessibleDescription()

QWidget::accessibleName

[public plain  ]

QString accessibleName() const See also setAccessibleName()

QWidget::actionEvent

[protected plain  virtual]

void actionEvent(QActionEvent *event) 每当更改窗口小部件的动作时,都会使用给定_event_调用此事件处理程序。

See also addAction() insertAction() removeAction() actions() QActionEvent

QWidget::actions

[public plain  ]

QList<QAction *> actions() const 返回此小部件操作的列表(可能为空)。

See also contextMenuPolicy insertAction() removeAction()

QWidget::activateWindow

[public plain  ]

void activateWindow() 将包含此窗口小部件的顶层窗口小部件设置为活动窗口。

活动窗口是具有键盘输入焦点的可见顶层窗口。

该功能执行与在顶级窗口的标题栏上单击鼠标相同的操作。在 X11 上,结果取决于 Window Manager。如果要确保窗口也堆叠在顶部,则还应该调用 raise() 。请注意,该窗口必须可见,否则无效。

在 Windows 上,如果在应用程序当前不是活动的应用程序时调用它,则它将不会使其成为活动的窗口。它将更改任务栏条目的颜色,以指示该窗口已以某种方式更改。这是因为 Microsoft 不允许应用程序中断用户在另一个应用程序中当前正在执行的操作。

See also isActiveWindow() window() show() QWindowsWindowFunctions::setWindowActivationBehavior()

QWidget::addAction

[public plain  ]

void addAction(QAction *action) 将_action_追加到此小部件的操作列表中。

所有 QWidget 都有一个 QAction 列表,但是可以用许多不同的方式以图形方式表示它们。 QAction 列表(由 actions() )返回)的默认用法是创建上下文 QMenu

一个 QWidget 应该只有一个动作,添加一个已经存在的动作不会导致同一动作在小部件中出现两次。

_action_的所有权不会转移到此 QWidget

See also removeAction() insertAction() actions() QMenu

QWidget::addActions

[public plain  ]

void addActions(QList<QAction *> actions) 将_actions_追加到此小部件的操作列表中。

See also removeAction() QMenu addAction()

QWidget::adjustSize

[public plain  ]

void adjustSize() 调整窗口小部件的大小以适合其内容。

如果有效,则此函数使用 sizeHint() ,即大小提示的宽度和高度>=0。否则,它将大小设置为覆盖所有子小部件的子矩形(所有子小部件矩形的并集)。

对于 Windows,还应考虑屏幕尺寸。如果 sizeHint() 小于(200,100)并且大小策略 QSizePolicy::Expanding ,则窗口将至少为(200,100)。窗口的最大大小是屏幕宽度和高度的2/3。

See also sizeHint() childrenRect()

QWidget::autoFillBackground

[public plain  ]

bool autoFillBackground() const See also setAutoFillBackground()

QWidget::backgroundRole

[public plain  ]

QPalette::ColorRole backgroundRole() const 返回窗口小部件的背景角色。

背景角色从小部件的调色板 palette 中定义用于渲染背景的笔刷。

如果未设置任何显式后台角色,则该小部件将继承其父小部件的后台角色。

See also setBackgroundRole() foregroundRole()

QWidget::backingStore

[public plain  ]

QBackingStore * backingStore() const 返回此小部件将被绘制到的 QBackingStore

QWidget::baseSize

[public plain  ]

QSize baseSize() const See also setBaseSize()

QWidget::changeEvent

[protected plain  virtual]

void changeEvent(QEvent *event) 可以重新实现此事件以处理状态更改。

可以通过提供的事件来检索此事件_event_中正在更改的状态。

变更事件包括: QEvent::ToolBarChangeQEvent::ActivationChangeQEvent::EnabledChangeQEvent::FontChangeQEvent::StyleChangeQEvent::PaletteChangeQEvent::WindowTitleChangeQEvent::IconTextChangeQEvent::ModifiedChangeQEvent::MouseTrackingChangeQEvent::ParentChangeQEvent::WindowStateChangeQEvent::LanguageChangeQEvent::LocaleChangeQEvent::LayoutDirectionChangeQEvent::ReadOnlyChange

QWidget::childAt

[public plain  ]

QWidget * childAt(int x, int y) const 返回窗口小部件坐标系统中(_x_,_y_)位置处的可见子窗口小部件。如果在指定位置没有可见的子窗口小部件,则该函数返回nullptr

QWidget::childAt

[public plain  ]

QWidget * childAt(const QPoint &p) const 这是一个重载函数。

返回窗口小部件自身坐标系统中_p_点处的可见子窗口小部件。

QWidget::childrenRect

[public plain  ]

QRect childrenRect() const

QWidget::childrenRegion

[public plain  ]

QRegion childrenRegion() const

QWidget::clearFocus

[public plain  ]

void clearFocus() 从小部件获取键盘输入焦点。

如果窗口小部件具有活动焦点,则会向该窗口小部件发送聚焦事件 focusOutEvent() ,以告知它已失去焦点。

此小部件必须启用焦点设置才能获取键盘输入焦点,即它必须调用 setFocusPolicy()

See also hasFocus() setFocus() focusInEvent() focusOutEvent() setFocusPolicy() QApplication::focusWidget()

QWidget::clearMask

[public plain  ]

void clearMask() 删除由 setMask() 设置的任何图形遮罩功能。

See also setMask()

QWidget::close

[public slot  ]

bool close() 关闭此小部件。如果小部件已关闭,则返回True;否则返回false

首先,它向小部件发送 QCloseEvent 。 如果小部件 QEvent::accept() 关闭事件,其将会 hide() 。如果它 QEvent::ignore() 该事件,则什么也不会发生。 QWidget::closeEvent() 默认实现接受close事件。

如果该窗口小部件具有 Qt::WA_DeleteOnClose 标志,则该窗口小部件也将被删除。无论窗口小部件是否可见,关闭事件都会传递到窗口小部件。

当最后一个设置了 QApplication::lastWindowClosed() 属性的可见主窗口(即没有父窗口)关闭时,将发出 Qt::WA_QuitOnClose 信号。默认情况下,将为除瞬态窗口(例如初始屏幕,工具窗口和弹出菜单)之外的所有窗口小部件设置此属性。

QWidget::closeEvent

[protected plain  virtual]

void closeEvent(QCloseEvent *event) 当 Qt 从窗口系统收到对顶级窗口小部件的窗口关闭请求时,将使用给定事件调用此事件_event_处理程序。

默认情况下,事件被接受并且窗口小部件关闭。可以重新实现此功能,以更改小部件响应窗口关闭请求的方式。例如,可以通过在所有事件上调用 QEvent::ignore() 来防止窗口关闭。

主窗口应用程序通常使用此功能的重新实现来检查用户的工作是否已保存并在关闭前请求许可。 例如, Application Example 应用程序示例使用帮助器函数来确定是否关闭窗口:

See also event() hide() close() QCloseEvent Application Example

QWidget::contentsMargins

[public plain  ]

QMargins contentsMargins() const

该函数返回小部件的内容边距。 See also setContentsMargins() contentsRect()

QWidget::contentsRect

[public plain  ]

QRect contentsRect() const 返回窗口小部件内的区域。

See also setContentsMargins() contentsMargins()

QWidget::contextMenuEvent

[protected plain  virtual]

void contextMenuEvent(QContextMenuEvent *event) 对于事件_event_,可以在子类中重新实现此事件处理程序,以接收小部件上下文菜单事件。

当小部件的 contextMenuPolicyQt::DefaultContextMenu 时,将调用处理程序。

默认实现忽略上下文事件。有关更多详细信息,请参见 QContextMenuEvent 文档。

See also event() QContextMenuEvent customContextMenuRequested()

QWidget::contextMenuPolicy

[public plain  ]

Qt::ContextMenuPolicy contextMenuPolicy() const See also setContextMenuPolicy()

QWidget::create

[protected plain  ]

void create(WId window, bool initializeWindow, bool destroyOldWindow) 创建一个新的窗口小部件窗口。

Qt 5中会忽略参数_window_,_initializeWindow_和_destroyOldWindow_。请使用 QWindow::fromWinId() 创建一个包装外部窗口的 QWindow ,并将其传递给 QWidget::createWindowContainer()

See also createWindowContainer() QWindow::fromWinId()

QWidget::createWinId

[private plain  ]

void createWinId() 确保窗口小部件具有窗口系统标识符,即窗口系统已知。

QWidget::createWindowContainer

[public plain static ]

QWidget * createWindowContainer(QWindow *window, QWidget *parent, Qt::WindowFlags flags) 创建一个 QWidget ,可以将窗口_window_嵌入到基于 QWidget 的应用程序中。

窗口容器被创建为父窗口_parent_的子窗口,并带有窗口标志_flags_。

一旦将窗口嵌入到容器中,容器将控制窗口的几何形状和可见性。不建议在嵌入式窗口上显式调用 QWindow::setGeometry()QWindow::show()QWindow::hide()

容器接管了窗口_window_的所有权。可以通过调用 QWindow::setParent() 从窗口容器中删除该窗口。

窗口容器作为本机子窗口附加到其子级的顶层窗口。当窗口容器用作 QAbstractScrollAreaQMdiArea 的子级时,它将为其父链中的每个小部件创建一个本机窗口 Native Widgets vs Alien Widgets ,以便在此用例中进行适当的堆叠和剪切。为窗口容器创建本机窗口还可以进行正确的堆栈和剪切。必须在显示窗口容器之前完成此操作。具有许多本机子窗口的应用程序可能会遇到性能问题。

窗口容器有许多已知的限制:

  • 堆叠顺序;嵌入式窗口将作为不透明框堆叠在小部件层次结构的顶部。多个重叠的窗口容器实例的堆叠顺序是不确定的。
  • 渲染集成;窗口容器不能与 QGraphicsProxyWidgetQWidget::render() 或类似功能互操作。
  • 焦点处理;可以让窗口容器实例具有任何焦点策略,并且可以通过调用 QWindow::requestActivate() 将焦点委托给窗口。但是,从 QWindow 实例返回正常的焦点链将取决于 QWindow 实例实现本身。例如,当进入具有标签页焦点的基于 Qt Quick 的窗口时,很有可能进一步的标签页按下只会在 QML 应用程序内部循环。同样, QWindow::requestActivate() 是否真正赋予窗口焦点取决于平台。
  • 在基于 QWidget 的应用程序中使用许多窗口容器实例可能会严重损害应用程序的整体性能。

QWidget::cursor

[public plain  ]

QCursor cursor() const See also setCursor()

QWidget::customContextMenuRequested

[public signal  ]

void customContextMenuRequested(const QPoint &pos) 当窗口小部件的 contextMenuPolicyQt::CustomContextMenu 且用户已请求窗口小部件上的上下文菜单时,将发出此信号。位置_pos_是窗口小部件接收的上下文菜单事件的位置。通常,这是在小部件坐标中。该规则的例外是 QAbstractScrollArea 及其子类,这些子类将上下文菜单事件映射到 QAbstractScrollArea::viewport() 的坐标。

See also mapToGlobal() QMenu contextMenuPolicy

QWidget::d_func

[private plain  ]

QWidgetPrivate * d_func()

QWidget::d_func

[private plain  ]

const QWidgetPrivate * d_func() const

QWidget::destroy

[protected plain  ]

void destroy(bool destroyWindow, bool destroySubWindows) 释放窗口系统资源。如果_destroyWindow_为 True,则销毁窗口小部件窗口。

为所有子窗口小部件递归调用自身,将_destroySubWindows_传递给_destroyWindow_参数。 要更好地控制子部件的销毁,请先选择性地销毁子部件。

通常从 QWidget 析构函数调用此函数。

QWidget::devType

[private plain  virtual]

int devType() const override

QWidget::dragEnterEvent

[protected plain  virtual]

void dragEnterEvent(QDragEnterEvent *event) 当拖动正在进行中并且鼠标进入该小部件时,将调用此事件处理程序。该事件在_event_参数中传递。

如果事件被忽略,则小部件将不会收到任何拖动事件 dragMoveEvent()

有关如何在应用程序中提供拖放 dnd.html 的概述,请参见拖放文档。

See also QDrag QDragEnterEvent

QWidget::dragLeaveEvent

[protected plain  virtual]

void dragLeaveEvent(QDragLeaveEvent *event) 当拖动正在进行中并且鼠标离开该小部件时,将调用此事件处理程序。该事件在_event_参数中传递。

有关如何在应用程序中提供拖放 dnd.html 的概述,请参见拖放文档。

See also QDrag QDragLeaveEvent

QWidget::dragMoveEvent

[protected plain  virtual]

void dragMoveEvent(QDragMoveEvent *event) 如果正在进行拖动,并且发生以下任何一种情况,则将调用此事件处理程序:光标进入此窗口小部件,光标在该窗口小部件内移动,或者在此窗口小部件获得焦点时按下键盘上的修改键。该事件在_event_参数中传递。

有关如何在应用程序中提供拖放 dnd.html 的概述,请参见拖放文档。

See also QDrag QDragMoveEvent

QWidget::dropEvent

[protected plain  virtual]

void dropEvent(QDropEvent *event) 当将拖动拖放到此小部件上时,将调用此事件处理程序。该事件在_event_参数中传递。

有关如何在应用程序中提供拖放 dnd.html 的概述,请参见拖放文档。

See also QDrag QDropEvent

QWidget::effectiveWinId

[public plain  ]

WId effectiveWinId() const 返回窗口小部件的有效窗口系统标识符,即本机父级的窗口系统标识符。

如果窗口小部件是本地窗口小部件,则此函数返回本地窗口小部件 ID。否则,返回第一个本机父窗口小部件的窗口 ID,即包含此窗口小部件的顶层窗口小部件。

注意:建议不要存储此值,因为它可能会在运行时更改。

See also nativeParentWidget()

QWidget::ensurePolished

[public plain  ]

void ensurePolished() const 确保小部件及其子级已被 QStyle 抛光(即具有正确的字体和调色板)。

QWidget 在完全构造之后但在第一次显示之前会调用此函数。如果想确保在执行操作之前将窗口小部件打磨,可以调用此函数,例如,在窗口小部件的 sizeHint() 重新实现中可能需要正确的字体大小。请注意,此函数is是从 sizeHint() 的默认实现中调用的。

抛光对于必须在调用所有构造函数(来自基类以及子类)之后进行的最终初始化很有用。

如果在抛光小部件时需要更改某些设置,请重新实现 event() 并处理 QEvent::Polish 事件类型。

注意:该函数声明为 const,以便可以从其它 const 函数(例如 sizeHint() ))中调用。

See also event()

QWidget::enterEvent

[protected plain  virtual]

void enterEvent(QEvent *event) 可以在子类中重新实现此事件处理程序,以接收在事件_event_参数中传递的小部件输入事件。

当鼠标光标进入窗口小部件时,事件将发送到该窗口小部件。

See also leaveEvent() mouseMoveEvent() event()

QWidget::event

[protected plain  virtual]

bool event(QEvent *event) override 这是主事件处理程序;它处理事件_event_。可以在子类中重新实现此功能,但是我们建议改用一种专门的事件处理程序。

按键和释放事件与其它事件的处理方式有所不同。检查 Tab 和 Shift+Tab 并尝试适当地移动焦点。 如果没有将焦点移至的小部件(或者按键不是 Tab 或 Shift+Tab),则调用 keyPressEvent()

鼠标和平板电脑的事件处理也有些特殊:仅当启用 enabled 小部件时,才会调用专门的处理程序,例如 mousePressEvent() ; 否则将丢弃该事件。

如果事件被识别,则此函数返回True,否则返回false。如果识别的事件被接受(请参阅 QEvent::accepted ),则任何进一步的处理(例如,事件传播到父窗口小部件)都将停止。

See also closeEvent() focusInEvent() focusOutEvent() enterEvent() keyPressEvent() keyReleaseEvent() leaveEvent() mouseDoubleClickEvent() mouseMoveEvent() mousePressEvent() mouseReleaseEvent() moveEvent() paintEvent() resizeEvent() QObject::event() QObject::timerEvent()

QWidget::find

[public plain static ]

QWidget * find(WId id) 返回带有窗口标识符/句柄_id_的窗口小部件的指针。

窗口标识符类型取决于基础窗口系统,有关实际定义,请参见qwindowdefs.h。如果没有带有此标识符的窗口小部件,则返回nullptr

QWidget::focusInEvent

[protected plain  virtual]

void focusInEvent(QFocusEvent *event) 可以在子类中重新实现此事件处理程序,以接收小部件的键盘焦点事件(接收到焦点)。该事件在_event_参数中传递

小部件通常必须将 setFocusPolicy() 设置为 Qt::NoFocus 以外的其它值,才能接收焦点事件。(请注意,应用程序程序员可以在任何小部件上调用 setFocus() ,即使那些通常不接受焦点的小部件也是如此。)

默认实现会更新窗口小部件(未指定 focusPolicy() 的窗口除外)。

See also focusOutEvent() setFocusPolicy() keyPressEvent() keyReleaseEvent() event() QFocusEvent

QWidget::focusNextChild

[protected plain  ]

bool focusNextChild() 查找一个新的小部件,以使键盘焦点适合 Tab,并在找到新的小部件时返回True;否则,返回 false。

See also focusPreviousChild()

QWidget::focusNextPrevChild

[protected plain  virtual]

bool focusNextPrevChild(bool next) 根据 Tab 和 Shift+Tab 键,找到一个使键盘焦点对准的新小部件,如果可以找到新的小部件,则返回True;否则,返回 false。

如果_next_为 True,则此函数向前搜索;如果_next_为 false,则向后搜索。

有时需要重新实现此功能。例如,Web 浏览器可能会重新实现它,以使其“当前活动链接”向前或向后移动,并且仅在到达“页面”上的最后一个或第一个链接时才调用。

子窗口小部件将调用其父窗口小部件,但是只有包含子窗口小部件的窗口才决定将焦点重定向到何处。通过为对象重新实现此功能,可以控制所有子窗口小部件的焦点遍历。

See also focusNextChild() focusPreviousChild()

QWidget::focusOutEvent

[protected plain  virtual]

void focusOutEvent(QFocusEvent *event) 可以在子类中重新实现此事件处理程序,以接收小部件的键盘焦点事件(焦点丢失)。事件在_event_参数中传递。

小部件通常必须将 setFocusPolicy() 设置为 Qt::NoFocus 以外的其它值,才能接收焦点事件。(请注意,应用程序程序员可以在任何小部件上调用 setFocus() ,即使那些通常不接受焦点的小部件也是如此。)

默认实现会更新窗口小部件(未指定 focusPolicy() 的窗口除外)。

See also focusInEvent() setFocusPolicy() keyPressEvent() keyReleaseEvent() event() QFocusEvent

QWidget::focusPolicy

[public plain  ]

Qt::FocusPolicy focusPolicy() const See also setFocusPolicy()

QWidget::focusPreviousChild

[protected plain  ]

bool focusPreviousChild() 根据 Shift+Tab 键,找到一个使键盘焦点对准的新小部件,如果可以找到新的小部件,则返回True;否则,返回 false。

See also focusNextChild()

QWidget::focusProxy

[public plain  ]

QWidget * focusProxy() const 返回焦点代理,如果没有焦点代理,则返回nullptr

See also setFocusProxy()

QWidget::focusWidget

[public plain  ]

QWidget * focusWidget() const 返回已调用 setFocus 的此小部件的最后一个子级。对于顶级窗口小部件,此窗口小部件将在激活此窗口的情况下获得焦点

这与 QApplication::focusWidget() 不同,后者在当前活动的窗口中返回焦点窗口小部件。

QWidget::font

[public plain  ]

const QFont & font() const See also setFont()

QWidget::fontInfo

[public plain  ]

QFontInfo fontInfo() const 返回小部件当前字体的字体信息。等效于QFontInfo(widget->font())

See also font() fontMetrics() setFont()

QWidget::fontMetrics

[public plain  ]

QFontMetrics fontMetrics() const 返回小部件当前字体的字体规格。等效于QFontMetrics(widget->font())

See also font() fontInfo() setFont()

QWidget::foregroundRole

[public plain  ]

QPalette::ColorRole foregroundRole() const 返回前景角色。

前景色角色定义了小部件调色板 palette 中用于绘制前景色的颜色。

如果未设置任何显式的前景觉色,则该函数将返回一个与背景色形成对比的角色。

See also setForegroundRole() backgroundRole()

QWidget::frameGeometry

[public plain  ]

QRect frameGeometry() const

QWidget::frameSize

[public plain  ]

QSize frameSize() const

QWidget::geometry

[public plain  ]

const QRect & geometry() const See also setGeometry()

QWidget::getContentsMargins

[public plain  ]

void getContentsMargins(int *left, int *top, int *right, int *bottom) const 使用 contentsMargins()

返回窗口小部件的_left_,_top_,_right_和_bottom_的内容边距。

See also setContentsMargins() contentsRect()

QWidget::grab

[public plain  ]

QPixmap grab(const QRect &rectangle) 将窗口小部件渲染为受_rectangle_限制的像素图。如果小部件有任何子代,则它们也将被绘制在适当的位置。

如果指定了无效尺寸的矩形(默认值),则会绘制整个窗口小部件。

See also render() QPixmap

QWidget::grabGesture

[public plain  ]

void grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags) 使用特定标志_flags_将小部件订阅给_gesture_。

See also ungrabGesture() QGestureEvent

QWidget::grabKeyboard

[public plain  ]

void grabKeyboard() 捕获键盘事件

这个小部件接收所有键盘事件,直到调用 releaseKeyboard() 为止;其它小部件完全没有键盘事件。鼠标事件不受影响。如果要抓取,请使用 grabMouse()

焦点小部件不受影响,只是它不接收任何键盘事件。 setFocus() 照常移动焦点,但是新的焦点小部件仅在调用 releaseKeyboard() 之后才接收键盘事件。

如果当前有其它窗口小部件正在捕获键盘输入,则首先释放该窗口小部件的捕获。

See also releaseKeyboard() grabMouse() releaseMouse() focusWidget()

QWidget::grabMouse

[public plain  ]

void grabMouse() 捕获鼠标事件。

此小部件将接收所有鼠标事件,直到调用 releaseMouse() 为止;否则,它将停止。其它小部件完全没有鼠标事件。键盘事件不受影响。如果要抓取,请使用 grabKeyboard()

警告:鼠标抓取应用程序中的错误经常会锁定终端。使用此功能时要格外谨慎,并在调试时考虑使用-nograb命令行选项。

使用 Qt 时几乎不需要捕获鼠标,因为 Qt 会明智地抓住并释放它。特别是,Qt 会在按下鼠标按钮时抓住鼠标,并一直保持到释放最后一个按钮为止。

注意:只有可见的窗口小部件才能捕获鼠标输入。如果 isVisible() 对于某个窗口小部件返回false,则该窗口小部件无法调用。

注意:在 Windows 上,仅当鼠标位于该进程拥有的窗口内时才起作用。在 macOS 上,仅当鼠标位于该小部件的框架内时才起作用。

See also releaseMouse() grabKeyboard() releaseKeyboard()

QWidget::grabMouse

[public plain  ]

void grabMouse(const QCursor &cursor) 该函数重载了 grabMouse()

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

光标将采用形状光标_cursor_(只要抓住了鼠标焦点),并且此小部件将是唯一接收鼠标事件的部件,直到调用 releaseMouse() 为止。

警告:抓住鼠标可能会锁定终端。

注意:请参阅 QWidget::grabMouse() 中的注释。

See also releaseMouse() grabKeyboard() releaseKeyboard() setCursor()

QWidget::grabShortcut

[public plain  ]

int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context) 将快捷方式添加到 Qt 的快捷方式系统中,该快捷方式系统在_context_中监视_key_序列。如果_context_是 Qt::ApplicationShortcut ,则该快捷方式将应用于整个应用程序。否则,它不是此窗口小部件 Qt::WidgetShortcut 的本地窗口,还是窗口本身的本地窗口。

如果多个窗口小部件都捕获了相同的_key_序列,则当_key_序列发生时,会以不确定的顺序将 QEvent::Shortcut 事件发送到所有其应用的窗口小部件,但``ambiguous''标志会设为 True。

警告:通常不需要使用此功能。而是使用所需的快捷键序列创建 QAction (如果还需要等效的菜单选项和工具栏按钮),或者如果只需要按键序列,则创建 QShortcutQActionQShortcut 都可以处理所有事件过滤,并提供在用户触发键序列时触发的信号,因此比该底层函数更易于使用。

See also releaseShortcut() setShortcutEnabled()

QWidget::graphicsEffect

[public plain  ]

QGraphicsEffect * graphicsEffect() const

该函数返回指向小部件图形效果的指针。 如果窗口小部件没有图形效果,则返回nullptr

See also setGraphicsEffect()

QWidget::graphicsProxyWidget

[public plain  ]

QGraphicsProxyWidget * graphicsProxyWidget() const 返回图形视图中相应嵌入式窗口小部件的代理窗口小部件;否则返回nullptr

See also QGraphicsProxyWidget::createProxyForChildWidget() QGraphicsScene::addWidget()

QWidget::hasEditFocus

[public plain  ]

bool hasEditFocus() const 如果此小部件当前具有编辑焦点,则返回 True;否则返回 false。

此功能仅在 Qt for Embedded Linux 中可用。

See also setEditFocus() QApplication::navigationMode()

QWidget::hasFocus

[public plain  ]

bool hasFocus() const

QWidget::hasHeightForWidth

[public plain  virtual]

bool hasHeightForWidth() const 如果小部件的首选高度取决于其宽度,则返回 True; 否则返回 false。

QWidget::hasMouseTracking

[public plain  ]

bool hasMouseTracking() const

QWidget::hasTabletTracking

[public plain  ]

bool hasTabletTracking() const

QWidget::height

[public plain  ]

int height() const

QWidget::heightForWidth

[public plain  virtual]

int heightForWidth(int w) const 给定宽度_w_,返回此小部件的首选高度。

如果此小部件具有布局,则默认实现将返回布局的首选高度。如果没有布局,则默认实现将返回-1,指示首选高度不取决于宽度。

QWidget::hide

[public slot  ]

void hide() 隐藏小部件。此函数等效于 setVisible (false)。

注意:如果正在使用 QDialog 或其子类,并且在此函数之后调用 show() 函数,则对话框将以其原始位置显示。

See also hideEvent() isHidden() show() setVisible() isVisible() close()

QWidget::hideEvent

[protected plain  virtual]

void hideEvent(QHideEvent *event) 可以在子类中重新实现此事件处理程序,以接收小部件隐藏事件。该事件在_event_参数中传递。

隐藏事件被隐藏后,会立即将其发送到窗口小部件。

注意:当窗口系统更改其映射状态时,例如窗口小部件,窗口小部件会收到自发的显示和隐藏事件。当用户最小化窗口时发生自发的隐藏事件,并在再次恢复窗口时发生自发的显示事件。接收到自发的隐藏事件后,从 isVisible() 的角度来看,仍将小部件视为可见的。

See also visible event() QHideEvent

QWidget::initPainter

[protected plain  virtual]

void initPainter(QPainter *painter) const override 将绘画笔_painter_,背景和字体初始化为与给定小部件相同的颜色。在 QWidget 上打开绘制器时,将自动调用此函数。

QWidget::inputMethodEvent

[protected plain  virtual]

void inputMethodEvent(QInputMethodEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收输入法合成事件。当输入方法的状态更改时,将调用此处理程序。

请注意,在创建自定义文本编辑窗口小部件时,必须显式设置 Qt::WA_InputMethodEnabled 窗口属性(使用 setAttribute() 函数),以便接收输入法事件。

默认的实现调用 event->ignore(),它拒绝 Input Method 事件。有关更多详细信息,请参见 QInputMethodEvent 文档。

See also event() QInputMethodEvent

QWidget::inputMethodHints

[public plain  ]

Qt::InputMethodHints inputMethodHints() const See also setInputMethodHints()

QWidget::inputMethodQuery

[public plain  virtual]

QVariant inputMethodQuery(Qt::InputMethodQuery query) const 此方法仅与输入窗口小部件有关。输入法使用它来查询窗口小部件的一组属性,以便能够支持复杂的输入法操作,以支持周围的文本和重新转换。

_query_指定要查询的属性。

See also inputMethodEvent() QInputMethodEvent QInputMethodQueryEvent inputMethodHints

QWidget::insertAction

[public plain  ]

void insertAction(QAction *before, QAction *action) 在操作之前_before_,将操作_action_插入到此小部件的操作列表中。 如果_before_是nullptr或_before_不是此小部件的有效操作,则它将追加操作。

一个 QWidget 应该只有一个动作。

See also removeAction() addAction() QMenu contextMenuPolicy actions()

QWidget::insertActions

[public plain  ]

void insertActions(QAction *before, QList<QAction *> actions) 在操作之前_before_,将操作_actions_插入到此小部件的操作列表中。 如果_before_是nullptr或_before_不是此小部件的有效操作,则它将追加操作。

一个 QWidget 最多可以包含每个动作之一。

See also removeAction() QMenu insertAction() contextMenuPolicy

QWidget::internalWinId

[private plain  ]

WId internalWinId() const

QWidget::isActiveWindow

[public plain  ]

bool isActiveWindow() const

QWidget::isAncestorOf

[public plain  ]

bool isAncestorOf(const QWidget *child) const 如果此窗口小部件是给定孩子_child_的父级(或祖父母等等),并且两个窗口小部件都在同一窗口内,则返回True;否则返回false

QWidget::isEnabled

[public plain  ]

bool isEnabled() const

QWidget::isEnabledTo

[public plain  ]

bool isEnabledTo(const QWidget *ancestor) const 如果启用了_ancestor_,则此小部件将变为启用状态,则返回True;否则返回false

如果未明确禁用小部件本身或直到父级(但不包括_ancestor_)的每个父级,则属于这种情况。

(0)如果此窗口小部件或其祖先被明确禁用,则返回 false。

祖先一词在此表示同一窗口中的父窗口小部件。

因此(0)停在此小部件的窗口,与 isEnabled() 不同,后者也考虑了父窗口。

See also setEnabled() enabled

QWidget::isEnabledToTLW

[public plain  ]

bool isEnabledToTLW() const 不推荐使用此功能。它等效于 isEnabled()

QWidget::isFullScreen

[public plain  ]

bool isFullScreen() const

QWidget::isHidden

[public plain  ]

bool isHidden() const 如果小部件被隐藏,则返回True,否则返回false

仅当调用 show() 时,隐藏的小部件才变得可见。显示父项时,不会自动显示。

要检查可见性,请改用! isVisible() (注意感叹号)。

意味着! isVisible() ,但一个部件可以同时是不可见和不隐藏的。对于作为不可见部件的子部件来说就是这种情况。

在以下情况下,小部件将被隐藏:

  • 它们被创建为独立的窗口,
  • 它们是作为可见小部件的子级创建的,
  • hide()setVisible (false)被调用。

QWidget::isLeftToRight

[private plain  ]

bool isLeftToRight() const

QWidget::isMaximized

[public plain  ]

bool isMaximized() const

QWidget::isMinimized

[public plain  ]

bool isMinimized() const

QWidget::isModal

[public plain  ]

bool isModal() const

QWidget::isRightToLeft

[private plain  ]

bool isRightToLeft() const

QWidget::isTopLevel

[public plain  ]

bool isTopLevel() const 使用 isWindow() 代替。

QWidget::isVisible

[public plain  ]

bool isVisible() const

QWidget::isVisibleTo

[public plain  ]

bool isVisibleTo(const QWidget *ancestor) const 如果显示_ancestor_,则此小部件将变为可见,则返回True;否则返回false。

如果窗口小部件本身或直到父级(但不包括_ancestor_)的任何父级都未被显式隐藏,则发生真实情况。

如果窗口小部件被屏幕上的其它窗口遮盖,则此函数仍将返回True,但是如果该窗口小部件或它们将被移动,则该窗口在物理上是可见的。

(0)与 isVisible() 相同。

See also show() hide() isVisible()

QWidget::isWindow

[public plain  ]

bool isWindow() const 如果小部件是一个独立的窗口,则返回True;否则,返回false

窗口是一个小部件,在视觉上不是任何其它小部件的子级,并且通常具有框架和窗口标题 QWidget::setWindowTitle()

窗口可以具有父窗口小部件 QWidget::parentWidget() 。 然后,它将与它的父项一起分组,并在删除父项时被删除,在最小化父项时被最小化等。如果窗口管理器支持,它还将具有与其父项相同的任务栏条目。

默认情况下,即使在构造函数中指定了父窗口小部件, QDialogQMainWindow 小窗口也是默认窗口。 此行为由 Qt::Window 标志指定。

See also window() isModal() parentWidget()

QWidget::isWindowModified

[public plain  ]

bool isWindowModified() const

QWidget::keyPressEvent

[protected plain  virtual]

void keyPressEvent(QKeyEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收小部件的按键事件。

小部件必须调用 setFocusPolicy() 才能最初接受焦点并具有焦点,以便接收按键事件。

如果重新实现此处理程序,那么如果不对键进行操作,则调用基类实现非常重要。

如果用户按下 QKeySequence::Cancel 的键序列(通常是 Escape 键),则默认实现将关闭弹出窗口小部件。 否则,事件将被忽略,以便小部件的父级可以解释它。

请注意, QKeyEvent 以 isAccepted()== True 开头,因此不需要调用 QKeyEvent::accept() - 如果对键进行操作,则不必调用基类实现。

See also keyReleaseEvent() setFocusPolicy() focusInEvent() focusOutEvent() event() QKeyEvent Tetrix Example

QWidget::keyReleaseEvent

[protected plain  virtual]

void keyReleaseEvent(QKeyEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收小部件的关键释放事件。

小部件必须首先接受焦点 setFocusPolicy() 并具有焦点 hasFocus() 才能接收按键释放事件。

如果重新实现此处理程序,那么如果不对键进行操作,则调用基类实现非常重要。

默认实现忽略该事件,以便小部件的父级可以解释该事件。

请注意, QKeyEvent 以 isAccepted() == True 开头,因此不需要调用 QKeyEvent::accept() - 如果对键进行操作,则不必调用基类实现。

See also keyPressEvent() QEvent::ignore() setFocusPolicy() focusInEvent() focusOutEvent() event() QKeyEvent

QWidget::keyboardGrabber

[public plain static ]

QWidget * keyboardGrabber() 返回当前正在获取键盘输入的小部件。

如果此应用程序中当前没有小部件在抓住键盘,则返回nullptr

See also grabMouse() mouseGrabber()

QWidget::layout

[public plain  ]

QLayout * layout() const 返回此窗口小部件上安装的布局管理器;如果未安装任何布局管理器,则返回nullptr

对于已添加到布局中的小部件,布局管理器设置其子代的几何形状。

See also setLayout() sizePolicy() Layout Management

QWidget::layoutDirection

[public plain  ]

Qt::LayoutDirection layoutDirection() const See also setLayoutDirection()

QWidget::leaveEvent

[protected plain  virtual]

void leaveEvent(QEvent *event) 可以在子类中重新实现此事件处理程序,以接收在_event_参数中传递的小部件离开事件。

当鼠标光标离开窗口小部件时,将离开事件发送到窗口小部件。

See also enterEvent() mouseMoveEvent() event()

QWidget::locale

[public plain  ]

QLocale locale() const See also setLocale()

QWidget::lower

[public slot  ]

void lower() 将小部件降低到父小部件堆栈的底部。

在此调用之后,小部件将在视觉上位于任何重叠的同级小部件之后(并因此而被其遮盖)。

See also raise() stackUnder()

QWidget::mapFrom

[public plain  ]

QPoint mapFrom(const QWidget *parent, const QPoint &pos) const 将小部件坐标_pos_从_parent_父级坐标系转换为该小部件的坐标系。 _parent_父级一定不能为nullptr,并且必须是调用小部件的父级。

See also mapTo() mapFromParent() mapFromGlobal() underMouse()

QWidget::mapFromGlobal

[public plain  ]

QPoint mapFromGlobal(const QPoint &pos) const 将全局屏幕坐标_pos_转换为小部件坐标。

See also mapToGlobal() mapFrom() mapFromParent()

QWidget::mapFromParent

[public plain  ]

QPoint mapFromParent(const QPoint &pos) const 将父窗口小部件坐标_pos_转换为窗口小部件坐标。

如果小部件没有父项,则与 mapFromGlobal() 相同。

See also mapToParent() mapFrom() mapFromGlobal() underMouse()

QWidget::mapTo

[public plain  ]

QPoint mapTo(const QWidget *parent, const QPoint &pos) const 将小部件坐标_pos_转换为_parent_父级坐标系。_parent_父级一定不能为nullptr,并且必须是调用小部件的父级。

See also mapFrom() mapToParent() mapToGlobal() underMouse()

QWidget::mapToGlobal

[public plain  ]

QPoint mapToGlobal(const QPoint &pos) const 将小部件坐标_pos_转换为全局屏幕坐标。例如,mapToGlobal(QPoint(0,0))将给出小部件的左上像素的全局坐标。

See also mapFromGlobal() mapTo() mapToParent()

QWidget::mapToParent

[public plain  ]

QPoint mapToParent(const QPoint &pos) const 将小部件坐标_pos_转换为父小部件中的坐标。

如果小部件没有父项,则与 mapToGlobal() 相同。

See also mapFromParent() mapTo() mapToGlobal() underMouse()

QWidget::mask

[public plain  ]

QRegion mask() const 返回当前在窗口小部件上设置的蒙版。如果未设置任何掩码,则返回值将为空白区域。

See also setMask() clearMask() QRegion::isEmpty() Shaped Clock Example

QWidget::maximumHeight

[public plain  ]

int maximumHeight() const See also setMaximumHeight()

QWidget::maximumSize

[public plain  ]

QSize maximumSize() const See also setMaximumSize()

QWidget::maximumWidth

[public plain  ]

int maximumWidth() const See also setMaximumWidth()

QWidget::metaObject

[private plain  virtual]

const QMetaObject * metaObject() const override

QWidget::metric

[protected plain  virtual]

int metric(QPaintDevice::PaintDeviceMetric m) const override 虚拟 QPaintDevice::metric() 函数的内部实现。

_m_是要获取的度量。

QWidget::minimumHeight

[public plain  ]

int minimumHeight() const See also setMinimumHeight()

QWidget::minimumSize

[public plain  ]

QSize minimumSize() const See also setMinimumSize()

QWidget::minimumSizeHint

[public plain  virtual]

QSize minimumSizeHint() const

QWidget::minimumWidth

[public plain  ]

int minimumWidth() const See also setMinimumWidth()

QWidget::mouseDoubleClickEvent

[protected plain  virtual]

void mouseDoubleClickEvent(QMouseEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收小部件的鼠标双击事件。

默认实现调用 mousePressEvent()

注意:除了双击事件外,小部件还将接收鼠标按下和鼠标释放事件。并且,如果另一个与该小部件重叠的小部件因响应按下或释放事件而消失,则该小部件将仅收到双击事件。开发人员有责任确保应用程序正确解释这些事件。

See also mousePressEvent() mouseReleaseEvent() mouseMoveEvent() event() QMouseEvent

QWidget::mouseGrabber

[public plain static ]

QWidget * mouseGrabber() 返回当前正在捕获鼠标输入的小部件。

如果此应用程序中当前没有任何小部件在抓住鼠标,则返回nullptr

See also grabMouse() keyboardGrabber()

QWidget::mouseMoveEvent

[protected plain  virtual]

void mouseMoveEvent(QMouseEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收小部件的鼠标移动事件。

如果关闭了鼠标跟踪,则仅当在移动鼠标时按下鼠标按钮时,才会发生鼠标移动事件。如果打开了鼠标跟踪,则即使没有按下鼠标按钮,也会发生鼠标移动事件。

QMouseEvent::pos() 报告鼠标光标相对于此小部件的位置。对于按下和释放事件,其位置通常与上次鼠标移动事件的位置相同,但是如果用户握手则可能会有所不同。这是基础窗口系统的功能,而不是 Qt。

如果要在鼠标移动时立即显示工具提示(例如,使用 QMouseEvent::pos() 获取鼠标坐标并将其显示为工具提示),则必须首先如上所述启用鼠标跟踪。然后,为确保立即更新工具提示,必须在实现时调用 QToolTip::showText() 而不是 setToolTip()

See also setMouseTracking() mousePressEvent() mouseReleaseEvent() mouseDoubleClickEvent() event() QMouseEvent Scribble Example

QWidget::mousePressEvent

[protected plain  virtual]

void mousePressEvent(QMouseEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收小部件的鼠标按下事件。

如果在 mouseReleaseEvent() 中创建新的窗口小部件,则可能无法达到期望的位置,具体取决于基础窗口系统(或 X11 窗口管理器),窗口小部件的位置可能更多。

在窗口外部单击时,默认实现会关闭弹出窗口小部件。对于其它窗口小部件类型,它不执行任何操作。

See also mouseReleaseEvent() mouseDoubleClickEvent() mouseMoveEvent() event() QMouseEvent Scribble Example

QWidget::mouseReleaseEvent

[protected plain  virtual]

void mouseReleaseEvent(QMouseEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收小部件的鼠标释放事件。

See also mousePressEvent() mouseDoubleClickEvent() mouseMoveEvent() event() QMouseEvent Scribble Example

QWidget::move

[public plain  ]

void move(const QPoint &)

QWidget::move

[public plain  ]

void move(int x, int y) 这是一个重载函数。

这相当于 move( QPoint (_x_,_y_))。

QWidget::moveEvent

[protected plain  virtual]

void moveEvent(QMoveEvent *event) 可以在子类中重新实现此事件处理程序,以接收在_event_参数中传递的小部件移动事件。当窗口小部件接收到此事件时,它已经处于新位置。

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

See also resizeEvent() event() move() QMoveEvent

QWidget::nativeEvent

[protected plain  virtual]

bool nativeEvent(const QByteArray &eventType, void *message, long *result) 可以在子类中重新实现此特殊事件处理程序,以接收由_eventType_标识的本机平台事件,这些事件在_message_参数中传递。

在重新实现此功能时,如果要停止由 Qt 处理的事件,请返回 True 并设置_result_。 _result_参数仅在 Windows 上具有含义。 如果返回 false,则将本机事件传递回 Qt,Qt 将事件转换为 Qt 事件并将其发送到小部件。

注意:仅当窗口小部件具有本机窗口句柄时,事件才会传递到此事件处理程序。

注意:此函数取代 Qt 4的事件过滤器函数 x11Event(),winEvent() 和 macEvent()。

Platform

Event Type Identifier

Message Type

Result Type

Windows

"windows_generic_MSG"

MSG *

LRESULT

macOS

"NSEvent"

NSEvent *

XCB

"xcb_generic_event_t"

xcb_generic_event_t *

See also QAbstractNativeEventFilter

QWidget::nativeParentWidget

[public plain  ]

QWidget * nativeParentWidget() const 返回此窗口小部件的本机父级,即下一个具有系统标识符的祖先窗口部件,如果没有任何本机父级,则返回nullptr

See also effectiveWinId()

QWidget::nextInFocusChain

[public plain  ]

QWidget * nextInFocusChain() const 返回此小部件的焦点链中的下一个小部件。

See also previousInFocusChain()

QWidget::normalGeometry

[public plain  ]

QRect normalGeometry() const

QWidget::operator=

[private copy-assign  ]

QWidget & operator=(const QWidget &)

QWidget::overrideWindowFlags

[public plain  ]

void overrideWindowFlags(Qt::WindowFlags flags) 将窗口小部件的窗口标志设置为标志_flags_,without而无需告知窗口系统。

警告:除非您真的知道自己在做什么,否则不要调用此函数。

See also setWindowFlags()

QWidget::overrideWindowState

[private plain  ]

void overrideWindowState(Qt::WindowStates newstate) 该函数在类似于 setWindowState() 的子窗口小部件上设置窗口状态。区别在于窗口状态更改事件设置了 isOverride() 标志。它的存在主要是为了保持 QWorkspace 的正常运行。

QWidget::paintEngine

[public plain  virtual]

QPaintEngine * paintEngine() const override 返回小部件的绘制引擎。

请注意,此函数不应由用户显式调用,因为它仅用于重新实现目的。该函数由 Qt 内部调用,默认实现可能并不总是返回有效的指针。

QWidget::paintEvent

[protected plain  virtual]

void paintEvent(QPaintEvent *event) 可以在子类中重新实现此事件处理程序,以接收事件中传递的绘画事件_event_。

绘制事件是重新绘制小部件的全部或一部分的请求。可能由于以下原因之一而发生:

  • 调用了 repaint()update()
  • 该小部件已被遮盖,现在已被发现,或者
  • 许多其它原因。

许多窗口小部件在被要求时可以简单地重绘整个表面,但是一些慢速窗口小部件需要通过仅绘制请求的区域来优化: QPaintEvent::region() 。 此速度优化不会更改结果,因为在事件处理期间将绘画裁剪到该区域。 例如, QListViewQTableView 可以做到这一点。

Qt 还尝试通过将多个绘画事件合并为一个来加快绘画速度。 当多次调用 update() 或窗口系统发送多个绘制事件时,Qt 会将这些事件合并为一个具有较大区域的事件(请参见 QRegion::united() )。 repaint() 函数不允许这种优化,因此建议尽可能使用 update()

发生绘画事件时,通常会擦除更新区域,此时正在小部件的背景上绘画。

可以使用 setBackgroundRole()setPalette() 设置背景。

从 Qt 4.0开始, QWidget 会自动对其绘画进行双缓冲,因此无需编写双缓冲代码来避免闪烁。

注意:通常,应该避免在内inside调用 update()repaint() 。例如,在结果内部的子级上调用 update()repaint() 会导致未定义的行为; 孩子可能会也可能不会参加绘画活动。

警告:如果使用的是没有 Qt 后备存储的自定义绘画引擎,则必须设置 Qt::WA_PaintOnScreen 。 否则, QWidget::paintEngine() 将永远不会被调用;将会使用后备存储。

See also event() repaint() update() QPainter QPixmap QPaintEvent Analog Clock Example

QWidget::palette

[public plain  ]

const QPalette & palette() const See also setPalette()

QWidget::parentWidget

[public plain  ]

QWidget * parentWidget() const 返回此窗口小部件的父级;如果没有任何父窗口小部件,则返回nullptr

QWidget::pos

[public plain  ]

QPoint pos() const

QWidget::previousInFocusChain

[public plain  ]

QWidget * previousInFocusChain() const

该函数返回此小部件的焦点链中的上一个小部件。 See also nextInFocusChain()

QWidget::qt_metacall

[private plain  virtual]

int qt_metacall(QMetaObject::Call , int , void **) override

QWidget::qt_metacast

[private plain  virtual]

void * qt_metacast(const char *) override

QWidget::qt_static_metacall

[private plain static ]

void qt_static_metacall(QObject *, QMetaObject::Call , int , void **)

QWidget::raise

[public slot  ]

void raise() 将此小部件提升到父小部件堆栈的顶部。

在此调用之后,该小部件将在视觉上位于任何重叠的同级小部件之前。

注意:使用 activateWindow() 时,可以调用此函数以确保窗口堆叠在顶部。

See also lower() stackUnder()

QWidget::rect

[public plain  ]

QRect rect() const

QWidget::redirected

[private plain  virtual]

QPaintDevice * redirected(QPoint *offset) const override 使用指定的偏移量_offset_进行 PaintDevice 渲染。

QWidget::releaseKeyboard

[public plain  ]

void releaseKeyboard() 捕获按键释放事件

See also grabKeyboard() grabMouse() releaseMouse()

QWidget::releaseMouse

[public plain  ]

void releaseMouse() 捕获鼠标释放事件

See also grabMouse() grabKeyboard() releaseKeyboard()

QWidget::releaseShortcut

[public plain  ]

void releaseShortcut(int id) 从 Qt 的快捷方式系统中删除具有给定_id_的快捷方式。该小部件将不再接收该快捷方式的键序列的 QEvent::Shortcut 事件(除非它具有具有相同键序列的其它快捷方式)。

警告:由于 Qt 的快捷方式系统会在其父窗口小部件销毁时自动删除快捷方式,因此通常不需要使用此功能。最好使用 QActionQShortcut 来处理快捷方式,因为它们比此低级功能更易于使用。还要注意,这是一个昂贵的操作。

See also grabShortcut() setShortcutEnabled()

QWidget::removeAction

[public plain  ]

void removeAction(QAction *action) 从此小部件的动作列表中删除动作_action_。

See also insertAction() actions() insertAction()

QWidget::render

[public plain  ]

void render(QPaintDevice *target, const QPoint &targetOffset, const QRegion &sourceRegion, QWidget::RenderFlags renderFlags) 使用_renderFlags_将此小部件的_sourceRegion_渲染到目标中_target_,以确定如何渲染。渲染从_target_中的_targetOffset_开始。例如:

如果_sourceRegion_为空区域,则此函数将使用 QWidget::rect() 作为区域,即整个窗口小部件。

在渲染之前,请确保为目标_target_设备的活动绘画工具(如果有)调用 QPainter::end() 。 例如:

注意:要获取 QOpenGLWidget 的内容,请改用 QOpenGLWidget::grabFramebuffer()

注意:要获取 QGLWidget 的内容(不建议使用),请改用 QGLWidget::grabFrameBuffer()或 QGLWidget::renderPixmap()。

QWidget::render

[public plain  ]

void render(QPainter *painter, const QPoint &targetOffset, const QRegion &sourceRegion, QWidget::RenderFlags renderFlags) 这是一个重载函数。

将窗口小部件渲染到画家_painter_的 QPainter::device() 中。

渲染时将使用应用于画家_painter_的变换和设置。

注意:_painter_画家必须处于活动状态。在 macOS 上,小部件将呈现为 QPixmap ,然后由_painter_绘画者绘制。

See also QPainter::device()

QWidget::repaint

[public slot  ]

void repaint() 除非立即禁用更新或隐藏小部件,否则立即通过调用 paintEvent() 直接重绘小部件。

我们建议仅在需要立即重绘(例如在动画过程中)时使用。在几乎所有情况下, update() 都会更好,因为它允许 Qt 优化速度并最大程度地减少闪烁。

警告:如果调用一个本身可能被 paintEvent() 调用的函数,则可能会得到无限递归。 update() 函数从不引起递归。

See also update() paintEvent() setUpdatesEnabled()

QWidget::repaint

[public plain  ]

void repaint(int x, int y, int w, int h) 这是一个重载函数。

此版本在小部件内重新绘制了一个矩形(_x_,_y_,_w_,_h_)。

如果_w_为负数,则将其替换为width() - x,如果_h_为负数,则将其替换为 widthheight() - y

QWidget::repaint

[public plain  ]

void repaint(const QRect &rect) 这是一个重载函数。

这个版本重新绘制了小部件内部的矩形_rect_。

QWidget::repaint

[public plain  ]

void repaint(const QRegion &rgn) 这是一个重载函数。

此版本在小部件内重新绘制了_rgn_区域。

QWidget::resize

[public plain  ]

void resize(const QSize &)

QWidget::resize

[public plain  ]

void resize(int w, int h) 这是一个重载函数。

这对应于 resize( QSize (_w_,_h_))。

QWidget::resizeEvent

[protected plain  virtual]

void resizeEvent(QResizeEvent *event) 可以在子类中重新实现此事件处理程序,以接收在事件_event_参数中传递的窗口小部件调整大小事件。 调用时,小部件已经具有新的几何形状。 可以通过 QResizeEvent::oldSize() 访问旧大小。

在处理调整大小事件后,该窗口小部件将被擦除并立即收到一个绘制事件。 在此处理程序内无需(或不应)进行绘制。

See also moveEvent() event() resize() QResizeEvent paintEvent() Scribble Example

QWidget::restoreGeometry

[public plain  ]

bool restoreGeometry(const QByteArray &geometry) 恢复存储在字节数组几何中的顶级窗口小部件的几何和状态_geometry_。成功返回True;否则返回false

如果还原的几何不在屏幕上,它将被修改为位于可用的屏幕几何之内。

要恢复使用 QSettings 保存的几何,可以使用如下代码:

有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

使用 QMainWindow::restoreState() 恢复工具栏和停靠小部件的几何形状和状态。

See also saveGeometry() QSettings QMainWindow::saveState() QMainWindow::restoreState()

QWidget::saveGeometry

[public plain  ]

QByteArray saveGeometry() const 保存顶层小部件的当前几何图形和状态。

要在窗口关闭时保存几何,可以实现如下的 close 事件:

有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

使用 QMainWindow::saveState() 保存几何图形以及工具栏和停靠小部件的状态。

See also restoreGeometry() QMainWindow::saveState() QMainWindow::restoreState()

QWidget::screen

[public plain  ]

QScreen * screen() const 返回窗口小部件所在的屏幕。

See also windowHandle()

QWidget::scroll

[public plain  ]

void scroll(int dx, int dy) 将小部件及其子_dx_像素向右滚动,并_dy_向下滚动。_dx_和_dy_都可能为负。

滚动后,小部件将接收需要重新绘制区域的绘制事件。对于 Qt 知道是不透明的小部件,这只是新暴露的部分。例如,如果将不透明的小部件向左滚动8个像素,则仅需要更新右侧边缘的8个像素宽的条纹。

由于小部件默认情况下会传播其父级的内容,因此需要设置 autoFillBackground 属性,或使用 setAttribute() 设置 Qt::WA_OpaquePaintEvent 属性,以使小部件不透明。

对于使用内容传播的窗口小部件,滚动将导致整个滚动区域的更新。

See also Transparency and Double Buffering

QWidget::scroll

[public plain  ]

void scroll(int dx, int dy, const QRect &r) 这是一个重载函数。

此版本仅滚动_r_,而不会移动小部件的子级。

如果_r_为空或无效,则结果不确定。

See also QScrollArea

QWidget::setAcceptDrops

[public plain  ]

void setAcceptDrops(bool on) See also acceptDrops()

QWidget::setAccessibleDescription

[public plain  ]

void setAccessibleDescription(const QString &description) See also accessibleDescription()

QWidget::setAccessibleName

[public plain  ]

void setAccessibleName(const QString &name) See also accessibleName()

QWidget::setAttribute

[public plain  ]

void setAttribute(Qt::WidgetAttribute attribute, bool on) 如果_on_为 True,则在此小部件上设置_attribute_属性;否则清除属性。

See also testAttribute()

QWidget::setAutoFillBackground

[public plain  ]

void setAutoFillBackground(bool enabled) See also autoFillBackground()

QWidget::setBackgroundRole

[public plain  ]

void setBackgroundRole(QPalette::ColorRole role) 将窗口小部件的背景色设置为角色_role_。

背景角色从小部件的调色板 palette 中定义用于渲染背景的笔刷。

如果角色_role_是 QPalette::NoRole ,则该小部件继承其父级的后台角色。

请注意,样式可以从调色板中自由选择任何颜色。 如果未达到所需的效果,则可以修改调色板或设置样式表。

See also backgroundRole() foregroundRole()

QWidget::setBackingStore

[private plain  ]

void setBackingStore(QBackingStore *store) 将后备存储设置为指定的存储_store_。 QWidget 将获得_store_的所有权。

See also backingStore()

QWidget::setBaseSize

[public plain  ]

void setBaseSize(const QSize &) See also baseSize()

QWidget::setBaseSize

[public plain  ]

void setBaseSize(int basew, int baseh) 这是一个重载函数。

这对应于 setBaseSizeQSize (_basew_,_baseh_))。将小部件的基本大小设置为_basew_宽度和_baseh_高度。

QWidget::setContentsMargins

[public plain  ]

void setContentsMargins(int left, int top, int right, int bottom) 将窗口小部件内容周围的边距设置为_left_,_top_,_right_和_bottom_。边距由布局系统使用,并且可由子类用于指定要绘制的区域(例如,不包括框架)。

更改边距将触发 resizeEvent()

See also contentsRect() contentsMargins()

QWidget::setContentsMargins

[public plain  ]

void setContentsMargins(const QMargins &margins) 这是一个重载函数。

setContentsMargins 函数设置小部件内容周围的边距。 将窗口小部件内容周围的边距设置为具有由边距_margins_确定的大小。边距由布局系统使用,并且可由子类用于指定要绘制的区域(例如,不包括框架)。

更改边距将触发 resizeEvent()

See also contentsRect() contentsMargins()

QWidget::setContextMenuPolicy

[public plain  ]

void setContextMenuPolicy(Qt::ContextMenuPolicy policy) See also contextMenuPolicy()

QWidget::setCursor

[public plain  ]

void setCursor(const QCursor &) See also cursor()

QWidget::setDisabled

[public slot  ]

void setDisabled(bool disable) 如果_disable_为 True,则禁用小部件输入事件;否则启用输入事件。

有关更多信息,请参见已启用 enabled 的文档。

See also isEnabledTo() QKeyEvent QMouseEvent changeEvent()

QWidget::setEditFocus

[public plain  ]

void setEditFocus(bool enable) 如果_enable_为 True,则使该窗口小部件具有编辑焦点,在这种情况下, Qt::Key_UpQt::Key_Down 将正常传递到该窗口小部件;否则,使用 Qt::Key_UpQt::Key_Down 更改焦点。

此功能仅在 Qt for Embedded Linux 中可用。

See also hasEditFocus() QApplication::navigationMode()

QWidget::setEnabled

[public slot  ]

void setEnabled(bool ) See also isEnabled()

QWidget::setFixedHeight

[public plain  ]

void setFixedHeight(int h) 在不更改宽度的情况下,将小部件的最小和最大高度都设置为_h_。为了提供方便。

See also sizeHint() minimumSize() maximumSize() setFixedSize()

QWidget::setFixedSize

[public plain  ]

void setFixedSize(const QSize &s) 将窗口小部件的最小和最大大小都设置为_s_,从而防止窗口小部件增大或缩小。

这将覆盖 QLayout 设置的默认大小限制。

要删除约束,请将大小设置为 QWIDGETSIZE_MAX

另外,如果希望窗口小部件根据其内容具有固定的大小,则可以调用 QLayout::setSizeConstraintQLayout::SetFixedSize );

See also maximumSize minimumSize

QWidget::setFixedSize

[public plain  ]

void setFixedSize(int w, int h) 这是一个重载函数。

将小部件的宽度设置为_w_,将高度设置为_h_。

QWidget::setFixedWidth

[public plain  ]

void setFixedWidth(int w) 将窗口小部件的最小和最大宽度都设置为_w_而不更改高度。为了提供方便。

See also sizeHint() minimumSize() maximumSize() setFixedSize()

QWidget::setFocus

[public plain  ]

void setFocus(Qt::FocusReason reason) 如果此窗口小部件或其父级之一是活动窗口 isActiveWindow() ,则将键盘输入焦点赋予该窗口小部件(或其焦点代理)。原因_reason_参数将传递到此函数发送的任何焦点事件中,用于解释导致窗口小部件获得焦点的原因。如果该窗口不处于活动状态,则当该窗口变为活动状态时,将为小部件提供焦点。

首先,将要更改的焦点事件发送到焦点小部件(如果有),以告知它即将失去焦点。 然后更改焦点,将焦点移出事件发送到上一个焦点项目,将焦点移入事件发送到新项目,以告诉它刚刚收到了焦点。(如果焦点对准和焦点对准小部件相同,则不会发生任何事情。)

注意:在嵌入式平台上, setFocus() 不会导致输入方法打开输入面板。如果希望发生这种情况,则必须将 QEvent::RequestSoftwareInputPanel 事件发送到小部件。

setFocus() 赋予窗口小部件以焦点,而不管其焦点策略如何,但不会清除任何键盘抓取(请参阅 grabKeyboard() )。

请注意,如果小部件是隐藏的,则在显示之前它将不接受焦点。

警告:如果在本身可以从 focusOutEvent()focusInEvent() 调用的函数中调用 setFocus() ,则可能会得到无限递归。

See also hasFocus() clearFocus() focusInEvent() focusOutEvent() setFocusPolicy() focusWidget() QApplication::focusWidget() grabKeyboard() grabMouse() Keyboard Focus in Widgets QEvent::RequestSoftwareInputPanel

QWidget::setFocus

[public slot  ]

void setFocus() 这是一个重载函数。

如果此窗口小部件或其父级之一是 isActiveWindow() ,则将键盘输入焦点赋予该窗口小部件(或其焦点代理)。

QWidget::setFocusPolicy

[public plain  ]

void setFocusPolicy(Qt::FocusPolicy policy) See also focusPolicy()

QWidget::setFocusProxy

[public plain  ]

void setFocusProxy(QWidget *w) 将小部件的焦点代理设置为小部件_w_。如果_w_为nullptr,则该函数会将此小部件重置为没有焦点代理。

某些小部件可以“具有焦点”,但是可以创建子小部件(例如 QLineEdit )来实际处理焦点。 在这种情况下,小部件可以将行编辑设置为其焦点代理。

设置在“此小部件”获得焦点时实际上将获得焦点的小部件。 如果存在焦点代理,则 setFocus()hasFocus() 在焦点代理上运行。 如果“此小部件”是焦点小部件,则将焦点移到新的焦点代理。

See also focusProxy()

QWidget::setFont

[public plain  ]

void setFont(const QFont &) See also font()

QWidget::setForegroundRole

[public plain  ]

void setForegroundRole(QPalette::ColorRole role) 将小部件的前景色设置为角色。

前景色角色定义了小部件调色板 palette 中用于绘制前景色的颜色。

如果角色_role_是 QPalette::NoRole ,则该小部件使用与背景角色形成对比的前景角色。

请注意,样式可以从调色板中自由选择任何颜色。 如果未达到所需的效果,则可以修改调色板或设置样式表。

See also foregroundRole() backgroundRole()

QWidget::setGeometry

[public plain  ]

void setGeometry(const QRect &) See also geometry()

QWidget::setGeometry

[public plain  ]

void setGeometry(int x, int y, int w, int h) 这是一个重载函数。

这对应于 setGeometryQRect (_x_,_y_,_w_,_h_))。

QWidget::setGraphicsEffect

[public plain  ]

void setGraphicsEffect(QGraphicsEffect *effect)

该功能用于设置小部件的图形效果。 将效果设置为小部件的效果_effect_。如果此小部件上已经安装了效果,则 QWidget 将在安装新效果之前删除现有_effect_。

如果_effect_是在其它窗口小部件上安装的效果,则将效果从窗口小部件中删除并将其安装在此窗口小部件上。

QWidget 拥有_effect_所有权。

注意:此功能会将效果应用于自身及其所有子代。

注意:基于 OpenGL 的小部件(例如 QGLWidget, QOpenGLWidget 和QQuickWidget)不支持图形效果。

See also graphicsEffect()

QWidget::setHidden

[public slot  ]

void setHidden(bool hidden) 便利功能,等效于 setVisible(!hidden)。

See also isHidden()

QWidget::setInputMethodHints

[public plain  ]

void setInputMethodHints(Qt::InputMethodHints hints) See also inputMethodHints()

QWidget::setLayout

[public plain  ]

void setLayout(QLayout *layout) 将此窗口小部件的布局管理器设置为布局_layout_。

如果此小部件上已经安装了布局管理器,则 QWidget 将不允许安装另一个。必须先删除现有的布局管理器(由 layout() 返回),然后才能使用新的布局进行调用。

如果_layout_是其它窗口小部件上的布局管理器,则将重新布局该布局并使之成为该窗口小部件的布局管理器。

例子:

调用此函数的另一种方法是将此小部件传递给布局的构造函数。

QWidget 将获得布局_layout_的所有权。

See also layout() Layout Management

QWidget::setLayoutDirection

[public plain  ]

void setLayoutDirection(Qt::LayoutDirection direction) See also layoutDirection()

QWidget::setLocale

[public plain  ]

void setLocale(const QLocale &locale) See also locale()

QWidget::setMask

[public plain  ]

void setMask(const QBitmap &bitmap) 仅使小部件的位图_bitmap_具有对应的1位的像素可见。如果该区域包括小部件的 rect() 外部的像素,则取决于平台,该区域中的窗口系统控件可能不可见。

请注意,如果区域特别复杂,此效果可能会很慢。

以下代码显示了如何使用具有 Alpha 通道的图像来生成小部件的外观:

该代码显示的标签会使用其中包含的图像进行遮罩,从而呈现出形状不规则的图像被直接绘制到屏幕上的蒙版。

蒙版小部件仅在其可见部分接收鼠标事件。

See also mask() clearMask() windowOpacity() Shaped Clock Example

QWidget::setMask

[public plain  ]

void setMask(const QRegion &region) 这是一个重载函数。

仅使窗口小部件的重叠区域_region_部分可见。如果该区域包括小部件的 rect() 外部的像素,则取决于平台,该区域中的窗口系统控件可能不可见。

请注意,如果区域特别复杂,此效果可能会很慢。

See also windowOpacity

QWidget::setMaximumHeight

[public plain  ]

void setMaximumHeight(int maxh) See also maximumHeight()

QWidget::setMaximumSize

[public plain  ]

void setMaximumSize(const QSize &) See also maximumSize()

QWidget::setMaximumSize

[public plain  ]

void setMaximumSize(int maxw, int maxh) 这是一个重载函数。

此函数对应于 setMaximumSizeQSize (_maxw_,_maxh_))。将最大宽度设置为_maxw_,将最大高度设置为_maxh_。

QWidget::setMaximumWidth

[public plain  ]

void setMaximumWidth(int maxw) See also maximumWidth()

QWidget::setMinimumHeight

[public plain  ]

void setMinimumHeight(int minh) See also minimumHeight()

QWidget::setMinimumSize

[public plain  ]

void setMinimumSize(const QSize &) See also minimumSize()

QWidget::setMinimumSize

[public plain  ]

void setMinimumSize(int minw, int minh) 这是一个重载函数。

此函数对应于 setMinimumSizeQSize (minw,minh))。将最小宽度设置为_minw_,将最小高度设置为_minh_。

QWidget::setMinimumWidth

[public plain  ]

void setMinimumWidth(int minw) See also minimumWidth()

QWidget::setMouseTracking

[public plain  ]

void setMouseTracking(bool enable) See also hasMouseTracking()

QWidget::setPalette

[public plain  ]

void setPalette(const QPalette &) See also palette()

QWidget::setParent

[public plain  ]

void setParent(QWidget *parent) 将窗口小部件的父级设置为_parent_,并重置窗口标志。小部件将移动到其新父级的位置(0,0)。

如果新的父窗口小部件位于不同的窗口中,则重做的窗口小部件及其子级将以与以前相同的内部顺序 setFocusPolicy() 附加到新的父窗口小部件的选项卡链的末尾。如果移动的窗口小部件之一具有键盘焦点,请对该窗口小部件调用 clearFocus()

如果新的父窗口小部件与旧的父窗口在同一窗口中,则设置父窗口不会改变标签的顺序或键盘焦点。

如果“新”父窗口小部件是旧的父窗口小部件,则此功能不执行任何操作。

注意:小部件在更改其父级时会变为不可见,即使以前是可见的。必须调用 show() 才能使小部件再次可见。

警告:极不可能需要此功能。如果有一个小部件可以动态更改其内容,则使用 QStackedWidget 会容易得多。

See also setWindowFlags()

QWidget::setParent

[public plain  ]

void setParent(QWidget *parent, Qt::WindowFlags f) 这是一个重载函数。

此函数还将小部件标志_f_用作参数。

QWidget::setShortcutAutoRepeat

[public plain  ]

void setShortcutAutoRepeat(int id, bool enable) 如果_enable_为 True,则启用具有给定_id_的自动重复快捷方式;否则禁用。

See also grabShortcut() releaseShortcut()

QWidget::setShortcutEnabled

[public plain  ]

void setShortcutEnabled(int id, bool enable) 如果_enable_为 True,则启用具有给定_id_的快捷方式;否则,快捷方式将被禁用。

警告:由于 Qt 的快捷方式系统会在小部件变得隐藏/可见并获得或失去焦点时自动启用/禁用快捷方式,因此通常不需要使用此功能。 最好使用 QActionQShortcut 来处理快捷方式,因为它们比此低级功能更易于使用。

See also grabShortcut() releaseShortcut()

QWidget::setSizeIncrement

[public plain  ]

void setSizeIncrement(const QSize &) See also sizeIncrement()

QWidget::setSizeIncrement

[public plain  ]

void setSizeIncrement(int w, int h) 这是一个重载函数。

将x(宽度)的大小增量设置为_w_,将y(高度)的大小增量设置为_h_。

QWidget::setSizePolicy

[public plain  ]

void setSizePolicy(QSizePolicy ) See also sizePolicy()

QWidget::setSizePolicy

[public plain  ]

void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) 这是一个重载函数。

将窗口小部件的尺寸策略设置为_horizontal_和_vertical_,并具有标准拉伸并且不设置宽度。

See also QSizePolicy::QSizePolicy()

QWidget::setStatusTip

[public plain  ]

void setStatusTip(const QString &) See also statusTip()

QWidget::setStyle

[public plain  ]

void setStyle(QStyle *style) 将小部件的 GUI 样式设置为_style_。样式对象的所有权不会转移。

如果未设置样式,则小部件将使用应用程序的样式, QApplication::style() 代替。

设置窗口小部件的样式不会影响现有或将来的子窗口小部件。

警告:此功能对于演示目的特别有用,需要在其中演示 Qt 的样式功能。实际的应用程序应避免使用它,而应使用一种一致的 GUI 样式。

警告:自定义 QStyle 子类当前不支持 Qt 样式表。 我们计划在将来的版本中解决此问题。

See also style() QStyle QApplication::style() QApplication::setStyle()

QWidget::setStyleSheet

[public slot  ]

void setStyleSheet(const QString &styleSheet) See also styleSheet()

QWidget::setTabOrder

[public plain static ]

void setTabOrder(QWidget *first, QWidget *second) 在焦点顺序中将第二个_second_小部件放在第一个_first_小部件之后。

它有效地从其焦点链中删除了第二个_second_小部件,并将其插入到第一个小_first_部件之后。

请注意,由于第二个_second_窗口小部件的制表符顺序已更改,因此应按以下顺序对链进行排序:

not像这样:

如果_first_或_second_具有焦点代理,请正确替换代理。

注意:从 Qt 5.10开始:具有子级作为焦点代理的窗口小部件被理解为复合窗口小部件。在一个或两个复合小部件之间设置标签顺序时,将保留每个内部小部件中的本地标签顺序。 这意味着,如果两个窗口小部件都是复合窗口小部件,则产生的选项卡顺序将是从第一个_first_内部的最后一个子项到第二个_second_内部的第一个子项。

See also setFocusPolicy() setFocusProxy() Keyboard Focus in Widgets

QWidget::setTabletTracking

[public plain  ]

void setTabletTracking(bool enable) See also hasTabletTracking()

QWidget::setToolTip

[public plain  ]

void setToolTip(const QString &) See also toolTip()

QWidget::setToolTipDuration

[public plain  ]

void setToolTipDuration(int msec) See also toolTipDuration()

QWidget::setUpdatesEnabled

[public plain  ]

void setUpdatesEnabled(bool enable) See also updatesEnabled()

QWidget::setVisible

[public slot  virtual]

void setVisible(bool visible) See also isVisible()

QWidget::setWhatsThis

[public plain  ]

void setWhatsThis(const QString &) See also whatsThis()

QWidget::setWindowFilePath

[public plain  ]

void setWindowFilePath(const QString &filePath) See also windowFilePath()

QWidget::setWindowFlag

[public plain  ]

void setWindowFlag(Qt::WindowType flag, bool on) 如果_on_为 True,则在此小部件上设置窗口标志_flag_;否则为 false。 否则清除标志。

See also setWindowFlags() windowFlags() windowType()

QWidget::setWindowFlags

[public plain  ]

void setWindowFlags(Qt::WindowFlags type) See also windowFlags()

QWidget::setWindowIcon

[public plain  ]

void setWindowIcon(const QIcon &icon) See also windowIcon()

QWidget::setWindowIconText

[public plain  ]

void setWindowIconText(const QString &) See also windowIconText()

QWidget::setWindowModality

[public plain  ]

void setWindowModality(Qt::WindowModality windowModality) See also windowModality()

QWidget::setWindowModified

[public slot  ]

void setWindowModified(bool ) See also isWindowModified()

QWidget::setWindowOpacity

[public plain  ]

void setWindowOpacity(qreal level) See also windowOpacity()

QWidget::setWindowRole

[public plain  ]

void setWindowRole(const QString &role) 将窗口的角色设置为_role_。 这仅对 X11上 的窗口有意义。

See also windowRole()

QWidget::setWindowState

[public plain  ]

void setWindowState(Qt::WindowStates windowState) 将窗口状态设置为_windowState_。窗口状态是 Qt::WindowStateQt::WindowMinimized ,Qt :: Qt::WindowMaximizedQt::WindowFullScreenQt::WindowActive 的 OR 组合。

如果窗口不可见(即 isVisible() 返回false),则窗口状态将在调用 show() 时生效。 对于可见的窗口,更改是立即的。例如,要在全屏模式和普通模式之间切换,请使用以下代码:

为了还原和激活最小化的窗口(同时保留其最大化和/或全屏状态),请使用以下命令:

调用此函数将隐藏小部件。必须调用 show() 才能使小部件再次可见。

注意:在某些窗口系统上, Qt::WindowActive 不是即时的,在某些情况下可能会被忽略。

窗口状态更改时,窗口小部件会收到 QEvent::WindowStateChange 类型的 changeEvent()

See also Qt::WindowState windowState()

QWidget::setWindowTitle

[public slot  ]

void setWindowTitle(const QString &) See also windowTitle()

QWidget::setupUi

[public plain  ]

void setupUi(QWidget *widget) 设置指定窗口小部件的用户界面_widget_。

注意:此功能可用于从使用 uic 创建的用户界面描述派生的窗口小部件。

See also Using a Designer UI File in Your C++ Application

QWidget::sharedPainter

[private plain  virtual]

QPainter * sharedPainter() const override 在 QPainter 的其它实例之间共享的 painter。

QWidget::show

[public slot  ]

void show() 显示窗口小部件及其子窗口小部件。

这等效于调用 showFullScreen()showMaximized()setVisible (True),具体取决于平台对窗口标志的默认行为。

See also raise() showEvent() hide() setVisible() showMinimized() showMaximized() showNormal() isVisible() windowFlags()

QWidget::showEvent

[protected plain  virtual]

void showEvent(QShowEvent *event) 可以在子类中重新实现此事件处理程序,以接收在_event_参数中传递的窗口小部件显示事件。

非自发的显示事件会在显示之前立即发送到窗口小部件。窗口的自发显示事件随后被传送。

注意:当窗口系统更改其映射状态时,例如窗口小部件,窗口小部件会收到自发的显示和隐藏事件。当用户最小化窗口时发生自发的隐藏事件,并在再次恢复窗口时发生自发的显示事件。接收到自发的隐藏事件后,从 isVisible() 的角度来看,仍将小部件视为可见的。

See also visible event() QShowEvent

QWidget::showFullScreen

[public slot  ]

void showFullScreen() 以全屏模式显示小部件。

调用此功能仅影响 isWindow()

要从全屏模式返回,请调用 showNormal()

全屏模式在 Windows 下工作得很好,但在 X 下却存在某些问题。这些问题是由于 ICCCM 协议的限制造成的,该协议规定了 X11 客户端和窗口管理器之间的通信。ICCCM 根本不理解非装饰的全屏窗口的概念。因此,能做的最好的办法是请求一个无边框的窗口,并将其放置和调整大小以填充整个屏幕。根据窗口管理器,这可能会或可能不会工作。无边框窗口是使用 MOTIF 提示来请求的,几乎所有的现代窗口管理器都至少部分支持这种提示。

另一种选择是完全绕开窗口管理器,并使用 Qt::X11BypassWindowManagerHint 标志创建一个窗口。但是,这还有其它严重的问题,例如键盘焦点完全损坏,对桌面更改或用户抬起其它窗口时产生非常奇怪的影响。

遵循现代 ICCCM 规范的 X11 窗口管理器正确支持全屏模式。

See also showNormal() showMaximized() show() hide() isVisible()

QWidget::showMaximized

[public slot  ]

void showMaximized() 显示最大化的小部件。

调用此功能仅影响 isWindow()

在 X11 上,此功能可能不适用于某些窗口管理器。 有关说明,请参见“ Window Geometry ”文档。

See also setWindowState() showNormal() showMinimized() show() hide() isVisible()

QWidget::showMinimized

[public slot  ]

void showMinimized() 将最小化的小部件显示为图标。

调用此功能仅影响 isWindow()

See also showNormal() showMaximized() show() hide() isVisible() isMinimized()

QWidget::showNormal

[public slot  ]

void showNormal() 在最大化或最小化窗口小部件后对其进行还原。

调用此功能仅影响 isWindow()

See also setWindowState() showMinimized() showMaximized() show() hide() isVisible()

QWidget::size

[public plain  ]

QSize size() const

QWidget::sizeHint

[public plain  virtual]

QSize sizeHint() const

QWidget::sizeIncrement

[public plain  ]

QSize sizeIncrement() const See also setSizeIncrement()

QWidget::sizePolicy

[public plain  ]

QSizePolicy sizePolicy() const See also setSizePolicy()

QWidget::stackUnder

[public plain  ]

void stackUnder(QWidget *w) 将窗口小部件放在父窗口小部件堆栈中的_w_下。

为了使这项工作有效,小部件本身和_w_必须是兄弟姐妹。

See also raise() lower()

QWidget::statusTip

[public plain  ]

QString statusTip() const See also setStatusTip()

QWidget::style

[public plain  ]

QStyle * style() const See also QWidget::setStyle() QApplication::setStyle() QApplication::style()

QWidget::styleSheet

[public plain  ]

QString styleSheet() const See also setStyleSheet()

QWidget::tabletEvent

[protected plain  virtual]

void tabletEvent(QTabletEvent *event) 可以在子类中重新实现该事件处理程序(用于事件_event_),以接收小部件的平板电脑事件。

如果重新实现此处理程序,则不处理该事件就必须 QEvent 事件,以便小部件的父级可以解释该事件,这一点非常重要。

默认实现忽略该事件。

如果关闭了数位板跟踪功能,则仅当手写笔与数位板接触或在移动手写笔时按下至少一个手写笔按钮时,才会发生数位板移动事件。 如果打开了数位板跟踪功能,则即使手写笔悬停在数位板附近而没有按下按钮时,也会发生数位板移动事件。

See also QEvent::ignore() QEvent::accept() event() setTabletTracking() QTabletEvent

QWidget::takeLayout

[private plain  ]

QLayout * takeLayout() 从小部件中删除布局。

QWidget::testAttribute

[public plain  ]

bool testAttribute(Qt::WidgetAttribute attribute) const 如果在此小部件上设置了_attribute_属性,则返回True;否则返回false

See also setAttribute()

QWidget::testAttribute_helper

[private plain  ]

bool testAttribute_helper(Qt::WidgetAttribute ) const

QWidget::toolTip

[public plain  ]

QString toolTip() const See also setToolTip()

QWidget::toolTipDuration

[public plain  ]

int toolTipDuration() const See also setToolTipDuration()

QWidget::topLevelWidget

[public plain  ]

QWidget * topLevelWidget() const 使用 window() 代替。

QWidget::underMouse

[public plain  ]

bool underMouse() const 如果小部件位于鼠标光标下方,则返回True;否则返回false

在拖放操作期间,此值未正确更新。

See also enterEvent() leaveEvent()

QWidget::ungrabGesture

[public plain  ]

void ungrabGesture(Qt::GestureType gesture) 从给定的手势_gesture_类型退订窗口小部件

See also grabGesture() QGestureEvent

QWidget::unsetCursor

[public plain  ]

void unsetCursor()

QWidget::unsetLayoutDirection

[public plain  ]

void unsetLayoutDirection()

QWidget::unsetLocale

[public plain  ]

void unsetLocale()

QWidget::update

[public slot  ]

void update() 除非禁用更新或隐藏小部件,否则更新小部件。

此功能不会导致立即重绘;相反,当 Qt 返回到主事件循环时,它将安排一个绘画事件进行处理。与调用 repaint() 相比,这允许 Qt 优化以提高速度和减少闪烁。

多次调用通常只会导致一次 paintEvent() 调用。

Qt 通常会在 paintEvent() 调用之前擦除小部件的区域。如果设置了 Qt::WA_OpaquePaintEvent 小部件属性,则该小部件负责使用不透明的颜色绘制其所有像素。

See also repaint() paintEvent() setUpdatesEnabled() Analog Clock Example

QWidget::update

[public plain  ]

void update(int x, int y, int w, int h) 这是一个重载函数。

此版本更新了小部件内的矩形(_x_,_y_,_w_,_h_)。

QWidget::update

[public plain  ]

void update(const QRect &rect) 这是一个重载函数。

此版本更新了小部件内的矩形_rect_。

QWidget::update

[public plain  ]

void update(const QRegion &rgn) 这是一个重载函数。

此版本在小部件内重新绘制了_rgn_区域。

QWidget::updateGeometry

[public plain  ]

void updateGeometry() 通知布局系统此窗口小部件已更改,并且可能需要更改几何形状。

如果 sizeHint()sizePolicy() 已更改,则调用此函数。

对于显式隐藏的小部件,是禁止操作。窗口小部件显示后将立即通知布局系统。

QWidget::updateMicroFocus

[protected slot  ]

void updateMicroFocus() 更新小部件的微焦点。

QWidget::updatesEnabled

[public plain  ]

bool updatesEnabled() const See also setUpdatesEnabled()

QWidget::visibleRegion

[public plain  ]

QRegion visibleRegion() const 返回可以发生绘制事件的未遮挡区域。

对于可见的窗口小部件,这是其它窗口小部件未覆盖的区域的近似值。否则,这是一个空白区域。

repaint() 函数在必要时调用此函数,因此通常不需要调用它。

QWidget::whatsThis

[public plain  ]

QString whatsThis() const See also setWhatsThis()

QWidget::wheelEvent

[protected plain  virtual]

void wheelEvent(QWheelEvent *event) 可以在子类中重新实现此事件处理程序(用于事件_event_),以接收小部件的转轮事件。

如果重新实现此处理程序,则不处理该事件就必须 QEvent 事件,以便小部件的父级可以解释该事件,这一点非常重要。

默认实现忽略该事件。

See also QEvent::ignore() QEvent::accept() event() QWheelEvent

QWidget::width

[public plain  ]

int width() const

QWidget::winId

[public plain  ]

WId winId() const 返回窗口小部件的窗口系统标识符。

原则上是可移植的,但是如果使用它,可能会做一些不可移植的事情。要小心使用。

如果窗口小部件是非本地(外来的)并在其上调用,则将为该窗口小部件提供本机句柄。

该值可能会在运行时更改。窗口系统标识符更改后,类型为 QEvent::WinIdChange 的事件将发送到窗口小部件。

See also find()

QWidget::window

[public plain  ]

QWidget * window() const 返回此窗口小部件的窗口,即具有(或可能具有)窗口系统框架的下一个祖先窗口小部件。

如果窗口小部件是窗口,则返回窗口小部件本身。

典型用法是更改窗口标题:

See also isWindow()

QWidget::windowFilePath

[public plain  ]

QString windowFilePath() const See also setWindowFilePath()

QWidget::windowFlags

[public plain  ]

Qt::WindowFlags windowFlags() const See also setWindowFlags()

QWidget::windowHandle

[public plain  ]

QWindow * windowHandle() const 如果这是本机窗口小部件,则返回关联的 QWindow 。 否则返回 null。

本机窗口小部件包括顶级窗口小部件,QGLWidget 和在其上调用 winId() 的子窗口小部件。

See also winId() screen()

QWidget::windowIcon

[public plain  ]

QIcon windowIcon() const See also setWindowIcon()

QWidget::windowIconChanged

[public signal  ]

void windowIconChanged(const QIcon &icon) 当窗口的图标更改时,以新图标_icon_作为参数,将发出此信号。

QWidget::windowIconText

[public plain  ]

QString windowIconText() const See also setWindowIconText()

QWidget::windowIconTextChanged

[public signal  ]

void windowIconTextChanged(const QString &iconText) 当窗口的图标文本更改时,以新的_iconText_作为参数,将发出此信号。

该信号已弃用。

QWidget::windowModality

[public plain  ]

Qt::WindowModality windowModality() const See also setWindowModality()

QWidget::windowOpacity

[public plain  ]

qreal windowOpacity() const See also setWindowOpacity()

QWidget::windowRole

[public plain  ]

QString windowRole() const 返回窗口的角色,或一个空字符串。

See also setWindowRole() windowIcon windowTitle

QWidget::windowState

[public plain  ]

Qt::WindowStates windowState() const 返回当前窗口状态。窗口状态是 Qt::WindowStateQt::WindowMinimizedQt::WindowMaximizedQt::WindowFullScreenQt::WindowActive 的 OR 组合。

See also Qt::WindowState setWindowState()

QWidget::windowTitle

[public plain  ]

QString windowTitle() const See also setWindowTitle()

QWidget::windowTitleChanged

[public signal  ]

void windowTitleChanged(const QString &title) 当窗口的标题更改时,以新_title_作为参数,将发出此信号。

QWidget::windowType

[public plain  ]

Qt::WindowType windowType() const 返回此窗口小部件的窗口类型。这与 windowFlags()Qt::WindowType_Mask 相同。

See also windowFlags

QWidget::x

[public plain  ]

int x() const

QWidget::y

[public plain  ]

int y() const

QWidget::~QWidget

[public destructor  virtual]

~QWidget() 销毁小部件。

所有此小部件的子级都将首先删除。如果此窗口小部件是主窗口小部件,则应用程序退出。

该枚举描述了调用 QWidget::render() 时如何呈现窗口小部件。

QWidget::DrawWindowBackgroundDrawWindowBackground

Constant Description
QWidget::DrawWindowBackground 如果启用此选项,则即使未设置 autoFillBackground ,窗口小部件的背景也会渲染到目标中。 默认情况下,此选项处于启用状态。
QWidget::DrawChildrenDrawChildren
Constant Description
:------- :-----
QWidget::DrawChildren 如果启用此选项,则将小部件的子级递归渲染到目标中。 默认情况下,此选项处于启用状态。
QWidget::IgnoreMaskIgnoreMask
Constant Description
:------- :-----
QWidget::IgnoreMask 如果启用此选项,则将小部件的 QWidget::mask() 渲染到目标中时将被忽略。 默认情况下,此选项处于禁用状态。

typedef QWidget::RenderFlags

此属性保存是否为此窗口小部件启用了放置事件。 将此属性设置为 True 会向系统宣布此小部件may可能能够接受放置事件。

如果窗口小部件是桌面( windowType() == Qt::Desktop ),则如果其它应用程序正在使用桌面,则此操作可能会失败。可以调用以测试是否发生这种情况。

警告:请勿在拖放事件处理程序中修改此属性。

默认情况下,此属性为false

See also Drag and Drop 该属性保存辅助技术所看到的小部件的描述。 小部件的可访问描述应传达小部件的功能。尽管 accessibleName 应该是一个简短的字符串(例如,Save),但是描述应该提供更多的上下文,例如保存当前文档

此属性必须本地化。

默认情况下,此属性包含一个空字符串,并且 Qt 退回到使用工具提示来提供此信息。

See also QWidget::accessibleName QAccessibleInterface::text() 该属性保存辅助技术看到的小部件名称。 这是诸如屏幕阅读器之类的辅助技术宣布此小部件的主要名称。对于大多数窗口小部件,不需要设置此属性。例如,对于 QPushButton ,将使用按钮的文本。

当窗口小部件不提供任何文本时,设置此属性很重要。例如,仅包含图标的按钮需要设置此属性才能与屏幕阅读器一起使用。该名称应简短,并且与小部件传达的视觉信息等效。

此属性必须本地化。

默认情况下,此属性包含一个空字符串。

See also QWidget::accessibleDescription QAccessibleInterface::text() 此属性保存是否自动填充小部件背景。 如果启用,此属性将导致 Qt 在调用 paint 事件之前填充小部件的背景。使用的颜色由小部件调色板 QPalette 中的 QPalette::Window 颜色角色定义。

此外,除非设置了 WA_OpaquePaintEvent 或 WA_NoSystemBackground 属性,否则 Windows 始终会用 QPalette::Window 填充。

如果小部件的父级对其背景具有静态渐变,则无法关闭此属性(即,将其设置为 false)。

警告:请谨慎使用此属性和 Qt Style Sheets 。当窗口小部件的样式表具有有效的背景或边框图像时,将自动禁用此属性。

默认情况下,此属性为false

See also Qt::WA_OpaquePaintEvent Qt::WA_NoSystemBackground QWidget#Transparency and Double Buffering 此属性保存小部件的基本大小。 如果窗口小部件定义 sizeIncrement() ,则使用基本大小来计算适当的窗口小部件大小。

默认情况下,对于新创建的窗口小部件,此属性包含的宽度和高度为零。

See also setSizeIncrement() 此属性保存窗口小部件的子项的边界矩形。 隐藏的孩子被排除在外。

默认情况下,对于没有子代的窗口小部件,此属性包含一个位于原点的宽度和高度为零的矩形。

See also childrenRegion() geometry() 此属性保存小部件的子项占用的合并区域。 隐藏的孩子被排除在外。

默认情况下,对于没有子代的窗口小部件,此属性包含一个空白区域。

See also childrenRect() geometry() mask() 此属性保存窗口小部件如何显示上下文菜单。 此属性的默认值为 Qt::DefaultContextMenu ,这意味着将调用 contextMenuEvent() 处理程序。 其它值是 Qt::NoContextMenuQt::PreventContextMenuQt::ActionsContextMenuQt::CustomContextMenu 。 使用 Qt::CustomContextMenu ,将发出信号 customContextMenuRequested()

See also contextMenuEvent() customContextMenuRequested() actions() 此属性保存此窗口小部件的光标形状。 此属性保存此窗口小部件的光标形状。

编辑器小部件可能使用I型光标:

如果未设置游标,或在调用之后,则使用父级的游标。

默认情况下,此属性包含带有 Qt::ArrowCursor 形状的光标。

如果鼠标离开小部件,即使鼠标被抓住,一些底层的窗口实现也会重置游标。如果要为所有窗口小部件设置光标,即使在窗口外,也可以考虑 QGuiApplication::setOverrideCursor()

See also QGuiApplication::setOverrideCursor() 此属性保存是否启用了窗口小部件。 通常,已启用的窗口小部件会处理键盘和鼠标事件。禁用的小部件则不会。 QAbstractButton 例外。

某些窗口小部件在禁用时会以不同的方式显示。例如,按钮可能会将其标签绘制为灰色。 如果小部件需要知道何时启用或禁用它,则可以将 changeEvent()QEvent::EnabledChange 类型一起使用。

禁用小部件会隐式禁用其所有子项。分别启用所有子控件,除非已明确禁用它们。当其父窗口小部件保持禁用状态时,不可能显式启用不是窗口的子窗口小部件。

默认情况下,此属性为True

See also isEnabledTo() QKeyEvent QMouseEvent changeEvent() 此属性保存此小部件(或其焦点代理)是否具有键盘输入焦点。 默认情况下,此属性为false

注意:为窗口小部件获取此属性的值实际上等效于检查 QApplication::focusWidget() 是否引用窗口小部件。

See also setFocus() clearFocus() setFocusPolicy() QApplication::focusWidget() 此属性保存小部件接受键盘焦点的方式。 如果窗口小部件通过制表键接受键盘焦点,则策略为 Qt::TabFocus ;如果窗口小部件通过单击接受焦点,则策略为 Qt::ClickFocus ;如果窗口小部件同时接受两者,则策略为 Qt::StrongFocus ;如果不接受,则策略为 Qt::NoFocus (默认)。完全接受焦点。

如果小部件处理键盘事件,则必须为其启用键盘焦点。通常这是从小部件的构造函数完成的。例如, QLineEdit 构造函数调用( Qt::StrongFocus )。

如果窗口小部件具有焦点代理,则焦点策略将传播给它。

See also focusInEvent() focusOutEvent() keyPressEvent() keyReleaseEvent() enabled 此属性保存当前为窗口小部件设置的字体。 此属性描述窗口小部件的请求字体。呈现标准组件时,小部件的样式使用该字体,并且该字体可用来确保自定义小部件可以保持与本机平台外观的一致性。通常,不同的平台或不同的样式为应用程序定义不同的字体。

当为窗口小部件分配新字体时,该字体的属性将与窗口小部件的默认字体组合在一起,以形成窗口小部件的最终字体。可以调用 fontInfo() 以获得小部件最终字体的副本。最终字体也用于初始化 QPainter 的字体。

默认值取决于系统环境。 QApplication 维护一种系统/主题字体,它是所有小部件的默认字体。对于某些类型的小部件,可能还会有特殊的字体默认值。还可以通过将自定义字体和窗口小部件的名称传递给 QApplication::setFont() 来自行定义窗口小部件的默认字体。 最后,将字体与 Qt 的字体数据库进行匹配以找到最佳匹配。

QWidget 将显式字体属性从父级传播到子级。如果更改字体的特定属性并将该字体分配给窗口小部件,则该属性将传播到窗口小部件的所有子级,从而覆盖该属性的所有系统默认值。请注意,默认情况下,除非启用了 Qt::WA_WindowPropagation 属性,否则字体不会传播到窗口(请参见 isWindow() )。

QWidget 的字体传播类似于其调色板传播。

当前样式用于呈现所有标准 Qt 小部件的内容,可以自由选择使用小部件字体,或者在某些情况下可以忽略(部分或完全)它。特别是,某些样式(例如 GTK 样式,Mac 样式和 Windows Vista 样式)对小部件字体进行了特殊修改,以匹配平台的本机外观。因此,不能保证将属性分配给窗口小部件的字体会更改窗口小部件的外观。相反,可以选择应用 styleSheet

注意:如果在与相同的窗口小部件上使用了 Qt Style Sheets ,则在设置冲突时,样式表将优先。

See also fontInfo() fontMetrics() 此属性保存窗口小部件相对于其父窗口(包括任何窗口框架)的几何形状。 有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕的几何形状。

See also geometry() x() y() pos() 此属性保存包含任何窗口框架的窗口小部件的大小。 默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕的几何形状。

此属性保存是否以全屏模式显示窗口小部件。 全屏模式下的窗口小部件占据整个屏幕区域,并且不显示窗口装饰,例如标题栏。

默认情况下,此属性为false

See also windowState() minimized maximized 此属性保存窗口小部件相对于其父窗口的几何形状,但不包括窗口框架。 更改几何时,小部件(如果可见)会立即接收一个移动事件( moveEvent() )和/或一个调整大小事件( resizeEvent() )。如果窗口小部件当前不可见,则可以保证在显示窗口小部件之前会接收到适当的事件。

如果大小分量超出由 minimumSize()maximumSize() 定义的范围,则将对其进行调整。

警告:resizeEvent()moveEvent() 内部调用可能导致无限递归。

有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕的几何形状。

See also frameGeometry() rect() move() resize() moveEvent() resizeEvent() minimumSize() maximumSize() 此属性保存窗口小部件的高度,不包括任何窗口框架。 有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

注意:请勿使用此功能在多屏幕桌面 QDesktopWidget 上查找屏幕的高度。请阅读此说明以获取详细信息 QDesktopWidget#Screen Geometry

默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕的几何形状。

See also geometry width size 此属性保存小部件具有的特定于输入法的提示。 这仅与输入窗口小部件有关。输入法使用它来检索有关输入法应如何操作的提示。例如,如果设置了 Qt::ImhFormattedNumbersOnly 标志,则输入法可能会更改其可视组件以反映只能输入数字。

警告:某些小部件需要某些标志才能正常工作。要设置标志,请执行w->setInputMethodHints(w->inputMethodHints()|f)而不是w->setInputMethodHints(f)

注意:标志只是提示,因此特定的输入法实现可以随意忽略它们。如果要确保输入了某种类型的字符,则还应该在小部件上设置 QValidator

默认值为 Qt::ImhNone

See also inputMethodQuery() 此属性保存此窗口小部件的窗口是否为活动窗口。 活动窗口是包含具有键盘焦点的窗口小部件的窗口(如果窗口没有窗口小部件或窗口小部件都不接受键盘焦点,则该窗口可能仍具有焦点)。

当弹出窗口可见时,此属性对于活动窗口and弹出窗口均为True

默认情况下,此属性为false

See also activateWindow() QApplication::activeWindow() 此属性保存此小部件的布局方向。 默认情况下,此属性设置为 Qt::LeftToRight

在窗口小部件上设置布局方向时,它将传播到窗口小部件的子级,但不会传播到作为窗口的子级,也不会传播到已明确为其调用的子级。 另外,在为父级调用之后after添加的子小部件不会继承父级的布局方向。

从 Qt 4.7开始,此方法不再影响文本布局方向。

See also QApplication::layoutDirection 此属性保存窗口小部件的语言环境。 只要未设置任何特殊的语言环境,它要么是父级的语言环境,要么是默认语言环境(如果此窗口小部件是顶级窗口小部件)。

如果窗口小部件显示日期或数字,则应使用窗口小部件的语言环境设置日期或数字的格式。

See also QLocale QLocale::setDefault() 此属性保存此小部件是否已最大化。 此属性仅与 Windows 有关。

注意:由于某些窗口系统的限制,它并不总是报告预期的结果(例如,如果 X11 上的用户通过窗口管理器最大化窗口,则 Qt 无法将其与其它任何调整大小区分开)。随着窗口管理器协议的发展,这种情况有望得到改善。

默认情况下,此属性为false

See also windowState() showMaximized() visible show() hide() showNormal() minimized 此属性保存窗口小部件的最大高度(以像素为单位)。 此属性对应于 maximumSize 属性所保持的高度。

默认情况下,此属性包含值16777215。

注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。

See also maximumSize maximumWidth 此属性保存窗口小部件的最大大小(以像素为单位)。 无法将窗口小部件的大小调整为大于最大窗口小部件的大小。

默认情况下,此属性包含的大小的宽度和高度的值均为16777215。

注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。

See also maximumWidth maximumHeight minimumSize sizeIncrement 此属性保存窗口小部件的最大宽度(以像素为单位)。 此属性对应于 maximumSize 属性持有的宽度。

默认情况下,此属性包含值16777215。

注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。

See also maximumSize maximumHeight 此属性保存是否最小化(图标化)此窗口小部件。 此属性仅与 Windows 有关。

默认情况下,此属性为false

See also showMinimized() visible show() hide() showNormal() maximized 此属性保存窗口小部件的最小高度(以像素为单位)。 此属性对应于 minimumSize 属性所保持的高度。

默认情况下,此属性的值为0。

See also minimumSize minimumWidth 此属性保存窗口小部件的最小大小。 无法将窗口小部件的大小调整为小于最小窗口小部件的大小。如果当前大小较小,则将小部件的大小强制为最小大小。

此函数设置的最小大小将覆盖 QLayout 定义的最小大小。为了取消设置最小大小,请使用的值。QSize(0, 0)

默认情况下,此属性包含一个宽度和高度为零的大小。

See also minimumWidth minimumHeight maximumSize sizeIncrement 此属性保存小部件的建议最小大小。 如果此属性的值是无效的大小,则不建议使用最小大小。

如果此小部件没有布局,则默认实现返回无效尺寸,否则返回布局的最小尺寸。大多数内置的小部件都可以重新实现。

除非设置了 minimumSize() 或将大小策略设置为 QSizePolicy::Ignore,否则 QLayout 绝不会将窗口小部件的大小调整为小于最小大小提示。如果设置了 minimumSize() ,则最小尺寸提示将被忽略。

See also QSize::isValid() resize() setMinimumSize() sizePolicy() 此属性保存窗口小部件的最小宽度(以像素为单位)。 此属性对应于 minimumSize 属性持有的宽度。

默认情况下,此属性的值为0。

See also minimumSize minimumHeight 此属性保存窗口小部件是否为模式窗口小部件。 此属性仅对 Windows 有意义。模态窗口小部件可防止所有其它窗口中的窗口小部件获得任何输入。

默认情况下,此属性为false

See also isWindow() windowModality QDialog 此属性保存是否为窗口小部件启用了鼠标跟踪。 如果禁用了鼠标跟踪(默认设置),则仅在移动鼠标时按下至少一个鼠标按钮时,窗口小部件才会接收鼠标移动事件。

如果启用了鼠标跟踪,则即使未按任何按钮,窗口小部件也会接收鼠标移动事件。

See also mouseMoveEvent() 此属性保留窗口小部件的几何形状,当它显示为普通(非最大化或全屏)顶级窗口小部件时将显示。 对于子窗口小部件,此属性始终包含一个空矩形。

默认情况下,此属性包含一个空矩形。

See also QWidget::windowState() QWidget::geometry 此属性保存小部件的调色板。 此属性描述窗口小部件的调色板。呈现标准组件时,该小部件的样式使用该调色板,并且可以用作确保自定义小部件可以与本机平台的外观保持一致的一种方式。通常,不同的平台或不同的样式具有不同的调色板。

为窗口小部件分配新的调色板时,该调色板中的颜色角色将与窗口小部件的默认调色板结合在一起,以形成窗口小部件的最终调色板。小部件的背景角色的调色板条目用于填充小部件的背景(请参阅 QWidget::autoFillBackground ),而前景角色则初始化 QPainter 的笔。

默认值取决于系统环境。 QApplication 维护一个系统/主题面板,该面板用作所有小部件的默认选项。对于某些类型的小部件,可能还会有特殊的调色板默认设置(例如,在 Windows Vista 上,从 QMenuBar 派生的所有类都具有特殊的默认调色板)。 还可以通过将自定义调色板和小部件名称传递给 QApplication::setPalette() 来自己为小部件定义默认调色板。最后,样式始终可以选择在分配调色板时对其进行抛光(请参见 QStyle::polish() )。

QWidget 将显式调色板角色从父级传播到子级。如果将画笔或颜色分配给调色板上的特定角色并将该调色板分配给小部件,则该角色将传播到所有小部件的子级,从而覆盖该角色的所有系统默认值。 请注意,默认情况下,除非启用了 Qt::WA_WindowPropagation 属性,否则调色板不会传播到窗口(请参见 isWindow() )。

QWidget 的调色板传播类似于其字体传播。

当前样式用于呈现所有标准 Qt 小部件的内容,可以自由地从小部件调色板中选择颜色和画笔,或者在某些情况下可以忽略(部分或全部)调色板。 特别是,某些样式(例如 GTK 样式,Mac 样式和 Windows Vista 样式)依赖于第三方 API 来呈现小部件的内容,并且这些样式通常不遵循调色板。因此,不能保证将角色分配给窗口小部件的调色板会更改窗口小部件的外观。相反,可以选择使用 styleSheet

警告:请勿将此功能与 Qt Style Sheets 一起使用。使用样式表时,可以使用“颜色”,“背景颜色”,“选择颜色”,“选择背景颜色”和“替代背景颜色”来自定义窗口小部件的调色板。

See also QGuiApplication::palette() QWidget::font() Qt Style Sheets 此属性保存窗口小部件在其父窗口小部件内的位置。 如果窗口小部件是窗口,则其位置是桌面上窗口小部件(包括其框架)的位置。

更改位置时,小部件(如果可见)会立即接收一个移动事件( moveEvent() )。如果该窗口小部件当前不可见,则可以保证在显示该事件之前会收到一个事件。

默认情况下,此属性包含一个指向原点的位置。

警告:moveEvent() 中调用或 setGeometry() 可能导致无限递归。

有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

See also frameGeometry size x() y() 此属性保存小部件的内部几何形状,不包括任何窗口框架。 rect 属性等于 QRect (0,0, width()height() )。

有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕的几何形状。

See also size 此属性保存窗口小部件的大小,不包括任何窗口框架。 如果窗口小部件在调整大小时可见,它将立即收到一个调整大小事件( resizeEvent() )。如果该窗口小部件当前不可见,则可以保证在显示该事件之前会收到一个事件。

如果大小超出由 minimumSize()maximumSize() 定义的范围,则将对其进行调整。

默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕的几何形状。

警告::在 resizeEvent() 中调用或 setGeometry() 可能导致无限递归。

注意:将大小设置为QSize(0, 0)将导致窗口小部件不出现在屏幕上。 这也适用于 Windows。

See also pos geometry minimumSize maximumSize resizeEvent() adjustSize() 此属性保存小部件的建议大小。 如果此属性的值是无效的大小,则不建议使用任何大小。

如果此窗口小部件没有布局,则默认实现返回无效的大小,否则返回布局的首选大小。

See also QSize::isValid() minimumSizeHint() sizePolicy() setMinimumSize() updateGeometry() 此属性保存小部件的大小增量。 当用户调整窗口大小时,其大小将水平以. width() ,垂直以. height() 像素为单位移动,并以 baseSize() 为基础。 首选的窗口小部件大小适用于非负整数ij

请注意,尽管可以设置所有小部件的大小增量,但它只会影响窗口。

默认情况下,此属性包含一个宽度和高度为零的大小。

警告:大小增加在 Windows 下无效,并且 X11 上的窗口管理器可能会忽略它。

See also size minimumSize maximumSize 此属性保存窗口小部件的默认布局行为。 如果有一个 QLayout 管理该小部件的子级,则使用该布局指定的大小策略。如果没有这样的 QLayout ,则使用此函数的结果。

默认策略是 Preferred/Preferred,这意味着可以自由调整窗口小部件的大小,但最好使用 sizeHint() 返回的大小。类似于按钮的小部件将大小策略设置为指定它们可以水平拉伸但垂直固定。这同样适用于 lineedit 控件(例如 QLineEditQSpinBox 或可编辑的 QComboBox )和其它水平定向的小部件(例如 QProgressBar )。 QToolButton 通常是正方形的,因此它们允许在两个方向上增长。支持不同方向的小部件(例如 QSliderQScrollBar 或 QHeader)仅指定在各个方向上的拉伸。可以提供滚动条的小部件(通常是 QScrollArea 的子类)往往会指定它们可以使用额外的空间,并且可以用不到 sizeHint() 的大小来做事。

See also sizeHint() QLayout QSizePolicy updateGeometry() 此属性保存窗口小部件的状态提示。 默认情况下,此属性包含一个空字符串。

See also toolTip whatsThis 此属性保存窗口小部件的样式表。 样式表包含对小部件样式的自定义的文本描述,如 Qt 样式表 Qt Style Sheets 文档中所述。

从 Qt 4.5开始,Qt 样式表完全支持 macOS。

警告:自定义 QStyle 子类当前不支持 Qt 样式表。我们计划在将来的版本中解决此问题。

See also setStyle() QApplication::styleSheet Qt Style Sheets 此属性保存是否为小部件启用了平板电脑跟踪。 如果禁用了数位板跟踪(默认设置),则在移动笔时,小部件仅在手写笔与数位板接触或至少按下一个手写笔按钮时接收数位板移动事件。

如果启用了数位板跟踪,则即使将鼠标悬停在附近,小部件也将接收数位板移动事件。这对于监视位置以及辅助属性(例如旋转和倾斜)以及在 UI中提供反馈很有用。

See also tabletEvent() 此属性保存窗口小部件的工具提示。 请注意,默认情况下,仅为活动窗口的子级窗口小部件显示工具提示。可以通过在window窗口上而不是在带有工具提示的窗口小部件上设置属性 Qt::WA_AlwaysShowToolTips 来更改此行为。

如果要控制工具提示的行为,则可以拦截 event() 函数并捕获 QEvent::ToolTip 事件(例如,如果要自定义应显示工具提示的区域)。

默认情况下,此属性包含一个空字符串。

See also QToolTip statusTip whatsThis 此属性保存窗口小部件的工具提示持续时间。 指定工具提示将显示多长时间(以毫秒为单位)。如果值为-1(默认值),则根据工具提示的长度来计算持续时间。

See also toolTip 此属性保存是否启用更新。 启用了更新的窗口小部件会接收绘画事件并具有系统背景;禁用的小部件则不会。这也意味着如果禁用更新,则调用 update()repaint() 无效。

默认情况下,此属性为True

通常用于在短时间内禁用更新,例如,避免在进行较大更改时出现屏幕闪烁。在 Qt 中,小部件通常不会产生屏幕闪烁,但是在 X11 上,当小部件被隐藏之前,服务器可能会擦除屏幕上的区域,然后其它小部件才能替换它们。禁用更新可以解决此问题。

例子:

禁用小部件会隐式禁用其所有子项。启用窗口小部件会启用除except顶层窗口小部件或已明确禁用的所有子窗口小部件之外的所有子窗口小部件。重新启用更新会隐式调用小部件上的 update()

See also paintEvent() 此属性保存窗口小部件是否可见。 如果窗口的所有父窗口小部件都可见,则调用(True)或 show() 会将窗口小部件设置为可见状态。如果祖先不可见,则在显示其所有祖先之前,该窗口小部件将不可见。如果其大小或位置已更改,则 Qt 保证窗口小部件在显示之前立即移动并调整大小。如果尚未调整窗口小部件的大小,Qt 将使用 adjustSize() 将窗口小部件的大小调整为有用的默认值。

调用(false)或 hide() 会显式隐藏窗口小部件。除非显示它,否则即使它的所有祖先都可见,显式隐藏的窗口小部件也将永远不可见。

当控件的可见性状态更改时,它会接收显示和隐藏事件。在隐藏事件和显示事件之间,无需浪费 CPU 周期来准备或向用户显示信息。例如,视频应用程序可能只是停止生成新帧。

屏幕上其它窗口遮挡的窗口小部件被视为可见。同样的情况适用于图标化的窗口以及存在于另一个虚拟桌面(在支持此概念的平台上)上的窗口。 当窗口系统更改其映射状态(例如,窗口小部件)时,窗口小部件会接收自发的显示和隐藏事件。当用户最小化窗口时发生自发的隐藏事件,并在再次恢复窗口时发生自发的显示事件。

几乎不需要重新实现该功能。如果需要在显示小部件之前更改某些设置,请改用 showEvent() 。 如果需要进行一些延迟的初始化,请使用传递给 event() 函数的 Polish 事件。

See also show() hide() isHidden() isVisibleTo() isMinimized() showEvent() hideEvent() 此属性保存小部件的“这是什么”帮助文本。 默认情况下,此属性包含一个空字符串。

See also QWhatsThis QWidget::toolTip QWidget::statusTip 此属性保存窗口小部件的宽度,不包括任何窗口框架。 有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

注意:请勿使用此功能在多屏幕桌面 QDesktopWidget 上查找屏幕的宽度。请阅读此说明 QDesktopWidget#Screen Geometry 以获取详细信息。

默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕的几何形状。

See also geometry height size 此属性保存与窗口小部件关联的文件路径。 此属性仅对 Windows 有意义。它将文件路径与窗口关联。如果设置了文件路径,但尚未设置窗口标题,则 Qt 会将窗口标题设置为使用 QFileInfo::fileName() 获得的指定路径的文件名。

如果在任何时候设置了窗口标题,则窗口标题优先,并且将显示而不是文件路径字符串。

此外,在 macOS 上,这样做还有一个好处,即假定文件路径存在,它将为窗口设置代理图标 http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGWindows/chapter_17_section_3.html

如果未设置文件路径,则此属性包含一个空字符串。

默认情况下,此属性包含一个空字符串。

See also windowTitle windowIcon 窗口标志是一种类型(例如 Qt::Dialog )和零个或多个窗口系统提示(例如 Qt::FramelessWindowHint )的组合。

如果窗口小部件的类型为 Qt::WidgetQt::SubWindow 并成为窗口( Qt::WindowQt::Dialog 等),则将其放置在桌面上的位置(0,0)。 如果窗口小部件是一个窗口并变为 Qt::WidgetQt::SubWindow ,则将其放置在相对于其父窗口小部件的位置(0,0)。

注意:更改窗口的标志时,此函数将调用 setParent() ,从而导致窗口小部件被隐藏。必须调用 show() 才能使小部件再次可见。

See also windowType() setWindowFlag() Window Flags Example 此属性保存窗口小部件的图标。 此属性仅对 Windows 有意义。如果未设置图标,则返回应用程序图标( QApplication::windowIcon() )。

注意:在 macOS 上,窗口图标代表活动文档,除非也使用 setWindowFilePath 设置了文件路径,否则窗口图标不会显示。

See also windowTitle setWindowFilePath 此属性保存要在最小化窗口的图标上显示的文本。 此属性仅对 Windows 有意义。如果未设置任何图标文本,则此访问器将返回一个空字符串。它仅在 X11 平台上实现,并且仅某些窗口管理器使用此 window 属性。

不推荐使用此属性。

See also windowIcon windowTitle 此属性保存哪些窗口被模式窗口小部件阻止。 此属性仅对 Windows 有意义。模态窗口小部件可防止其它窗口中的窗口小部件获得输入。该属性的值控制在小部件可见时哪些窗口被阻止。在窗口可见时更改此属性无效;必须先 hide() 小部件,然后再次 show()

默认情况下,此属性为 Qt::NonModal

See also isWindow() QWidget::modal QDialog 此属性保存窗口中显示的文档是否有未保存的更改。 修改后的窗口是内容已更改但尚未保存到磁盘的窗口。该标志将因平台而异。在 macOS 上,关闭按钮的外观会有所修改;在其它平台上,窗口标题将带有“*”(星号)。

窗口标题必须包含“[]”占位符,该占位符指示应在何处显示“”。通常,它应该出现在文件名之后(例如,“document1.txt [*]-文本编辑器”)。如果未修改窗口,则仅删除占位符。

请注意,如果将小部件设置为已修改,则其所有祖先也将被设置为已修改。但是,如果在窗口小部件上调用setWindowModified(false),它将不会传播到其父级,因为可能已修改了该父级的其它子级。

See also windowTitle Application Example SDI Example MDI Example 此属性保存窗口的不透明度级别。 不透明度的有效范围是1.0(完全不透明)到0.0(完全透明)。

默认情况下,此属性的值为1.0。

在支持 Composite 扩展的 Embedded Linux,macOS,Windows 和 X11 平台上可以使用此功能。

注意:在 X11 上,需要运行一个复合管理器,并且所使用的窗口管理器需要支持 X11 特定的 _NET_WM_WINDOW_OPACITY 原子。

警告:将此属性从不透明更改为透明可能会导致绘制事件,需要正确处理窗口才能正确显示窗口。这主要影响 QScreen::grabWindow() 的使用。另请注意,半透明窗口的更新和调整大小比不透明窗口要慢得多。

See also setMask() 此属性保存窗口标题(标题)。 此属性仅对顶级窗口小部件(如窗口和对话框)有意义。如果未设置标题,则标题基于 windowFilePath 。如果都没有设置,则标题为空字符串。

如果使用 windowModified 机制,则窗口标题必须包含“[]”占位符,该占位符指示应在何处显示“”。 通常,它应该出现在文件名之后(例如,“document1.txt [*]-文本编辑器”)。如果 windowModified 属性为false(默认值),则仅删除占位符。

在某些桌面平台(包括 Windows 和 Unix )上,应用程序名称(来自 QGuiApplication::applicationDisplayName )被添加到窗口标题的末尾(如果已设置)。这是由 QPA 插件完成的,因此会显示给用户,但它不是字符串的一部分。

See also windowIcon windowModified windowFilePath 此属性保存窗口小部件相对于其父窗口(包括任何窗口框架)的x坐标。 有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

默认情况下,此属性的值为0。

See also frameGeometry y pos 此属性保存窗口小部件相对于其父窗口的y坐标,包括任何窗口框架。 有关 Windows 几何问题的概述,请参见“ Window Geometry ”文档。

默认情况下,此属性的值为0。

See also frameGeometry x pos