QWidge类

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


Header:

#include <QWidget>

CMake:

find_package(Qt6 REQUIRED COMPONENTS Widgets)

target_link_libraries(mytarget PRIVATE Qt6::Widgets)

qmake:

QT += widgets

Inherits:

<QObject and <QPaintDevice

Inherited By:

QAbstractButton >

QAbstractSlider

QAbstractSpinBox

QCalendarWidget

QComboBox 

QDesignerActionEditorInterface

QDesignerFormWindowInterface

QDesignerObjectInspectorInterface

QDesignerPropertyEditorInterface

QDesignerWidgetBoxInterface

QDialog >

QDialogButtonBox

QDockWidget

QFocusFrame

QFrame >

QGroupBox

QHelpFilterSettingsWidget

QHelpSearchQueryWidget

QHelpSearchResultWidget

QKeySequenceEdit

QLineEdit

QMainWindow

QMdiSubWindow

QMenu

QMenuBar

QOpenGLWidget

QProgressBar

QQuickWidget

QRubberBand

QSizeGrip

QSplashScreen

QSplitterHandle

QStatusBar

QSvgWidget

QTabBar

QTabWidget

QToolBar

QWizardPage


QWidge详细描述>>


【公共类型】

enumRenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask }
该枚举描述了调用 QWidget::render () 时如何渲染控件。
flagsRenderFlags
RenderFlags 类型是 QFlags <RenderFlag> 的类型定义。它存储 RenderFlag 值的 OR 组合。

【属性】

acceptDrops : bool

是否为此控件启用拖放事件,默认为false 。

如果控件是桌面( windowType () == Qt::Desktop ),则如果另一个应用程序正在使用桌面,则此操作可能会失败;您可以调用acceptDrops()来测试是否发生这种情况。

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

accessibleDescription : QString

残障辅助。

accessibleName : QString

残障辅助。

autoFillBackground : bool

背景是否自动填充,默认为false 。

启用此属性将导致 Qt 在调用绘制事件之前填充控件背景,使用的颜色由控件的 palette 中的 QPalette::Window 颜色角色定义。

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

如果控件的父级背景具有 static 渐变,则无法关闭此属性(即设置为 false)。

警告:将此属性与 Qt Style Sheets 结合使用时请谨慎。当控件带有有效背景或边框图像的样式表时,此属性将自动禁用。

baseSize : QSize

该属性保存控件的基本尺寸。如果控件定义了 sizeIncrement(),则基本尺寸用于计算适当的控件大小。

默认情况下,对于新创建的控件,此属性包含宽度和高度为零的尺寸。

childrenRect : const QRect

保存控件子级的边界矩形,隐藏的子项被排除在外。默认情况下,对于没有子项的 widget,此属性包含一个宽度和高度为零的矩形,该矩形位于原点。

childrenRegion : const QRegion

此属性包含控件子项所占用的组合区域,隐藏的子项被排除在外。

默认情况下,对于没有子项的 widget,此属性包含一个空区域。

contextMenuPolicy : Qt::ContextMenuPolicy

控件如何显示上下文菜单。

此属性的默认值为Qt::DefaultContextMenu,这意味着调用了contextMenuEvent() 处理程序。其他值为Qt::NoContextMenuQt::PreventContextMenuQt::ActionsContextMenu, and Qt::CustomContextMenu 。使用 Qt::CustomContextMenu,发出信号customContextMenuRequested() i。

cursor : QCursor

光标形状。参阅: list of predefined cursor objects

编辑器控件可能使用 I-beam 光标 setCursor(Qt::IBeamCursor);

如果未设置光标或者在调用 unsetCursor()之后,则使用父级的光标。

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

如果光标离开控件,即使鼠标被抓取,某些底层窗口实现也会重置光标。如果要为所有控件设置光标,即使在窗口外也是如此,请考虑QGuiApplication::setOverrideCursor()。

enabled : bool

控件可用性。

启用的控件会处理键盘和鼠标事件,禁用的则不会,此属性默认为true。
例外情况是:某些控件在禁用时会以不同的方式显示。例如,按钮可能会将其标签绘制为灰色。如果您的控件需要知道它何时启用或禁用,则可以使用 changeEvent()启用QEvent::EnabledChange

禁用控件会隐式禁用其所有子项,启用将启用所有子控件,除非它们已被显式禁用。当其父控件保持禁用状态时,无法显式启用不是窗口的子控件。

focus : const bool

是否具有键盘输入焦点,默认为falsh。获取控件的此属性值实际上等同于检查 QApplication::focusWidget() 是否引用了该控件。

focusPolicy : Qt::FocusPolicy

接受键盘焦点的方式。

该策略明确控件是通过 Tab 键接受键盘焦点 Qt::TabFocus,还是通过单击接受焦点 Qt::ClickFocus ,亦或二者均能接受Qt::StrongFocus,或是根本不接受焦点Qt::NoFocus(默认)。
如果控件处理键盘事件,则必须为其启用键盘焦点。这通常是从控件的构造函数中完成的。例如,QLineEdit 构造函数调用 setFocusPolicy(Qt::StrongFocus)。
如果小组件具有焦点代理,则焦点策略将传播到它。

font : QFont

此属性保存控件当前的字体。
在标准控件中,由控件的样式使用此字体,并由此保障自定义控件与本机平台的外观保持一致。不同情况下为应用程序定义不同的字体是很常见的。当为控件指定新字体时,此字体的属性将与控件的默认字体组合在一起,以形成控件的最终字体。您可以调用 fontInfo()来获取控件最终字体的副本。最终的字体也是用于初始化QPainter的字体。

默认值取决于系统环境。QApplication维护系统/主题字体,该字体是所有控件的默认字体。某些类型的控件也可能有特殊的字体默认值。您可以通过将自定义字体和控件的名称传递给QApplication::setFont()来自行定义控件的默认字体。最后,将字体与Qt的字体数据库进行匹配,以找到最合适的字体。

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

QWidget的字体传播类似于它的palette传播。

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

注意: 如果Qt Style Sheets与 setFont()用于同一小部件,则在设置冲突时,样式表将优先。

frameGeometry : const QRect

控件相对于其父项的几何图形,包括窗口框架

有关窗口布局问题的概述,请参阅文档Window Geometry 。

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

frameSize : const QSize

此属性包含控件的大小,包括窗口框架

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

fullScreen : const bool

控件是否以全屏模式显示,默认为 false。
全屏模式下的控件会占用整个屏幕区域,并且不显示窗口装饰,例如标题栏。

geometry : QRect

控件相对于其父级的几何图形,但不包括窗口框架。默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何图形。
更改几何图形时,如果可见,小部件会立即收到移动事件 (moveEvent()),还可能收到调整大小事件(resizeEvent())。如果控件当前不可见,则保证在显示之前接收适当的事件。
如果尺寸超出minimumSize() 和 maximumSize()定义的范围,则调整该分量。

警告: resizeEvent() or moveEvent() 中调用 setGeometry() 会导致无限递归。

height : const int

此属性保存控件的高度,不包括窗口框架。

inputMethodHints : Qt::InputMethodHints

特定于输入法的提示控件才具有。这个属性仅与输入控件相关。输入法使用它来检索有关输入法应如何操作的提示。例如,如果设置了标志,则输入法可能会更改其视觉组件,以反映只能输入数字。

isActiveWindow : const bool

此属性保存此控件的窗口是否为活动窗口,活动窗口是包含具有键盘焦点的控件的窗口(如果窗口没有控件或其任何控件都不接受键盘焦点,则该窗口仍可能具有焦点)。
当弹出窗口可见时,此属性在活动窗口和弹出窗口可同时为true。
默认此属性为false。

layoutDirection : Qt::LayoutDirection

此属性保存控件的布局方向。
默认情况下,此属性设置为 Qt::LeftToRight
当在控件上设置布局方向时,它将传播到控件的子级,但不会传播到作为窗口的子级,也不会传播到已显式调用setLayoutDirection()的子级。此外,在为父级调用 setLayoutDirection()后添加的子控件不会继承父级的布局方向。

locale : QLocale

此属性保存该控件的区域设置。
只要没有设置特殊的区域设置,那要么是父级的区域设置,或者(如果此控件是顶级控件)是默认的区域设置。
如果控件显示日期或数字,则应该使用控件的区域设置进行格式化。

maximized : const bool

用于保存此控件是否最大化,此属性仅与 Windows 相关。

maximumHeight : int

此属性保存控件的最大高度(以像素为单位)。
此属性与maximumSize 属性所持有的高度相对应。

默认此属性值为 16777215。
注意: 宏QWIDGETSIZE_MAX定义限制了控件的最大尺寸。

maximumSize : QSize

此属性保存控件的最大大小(以像素为单位),无法将控件调整为大于最大控件尺寸的大小。
默认情况下,此属性包含一个尺寸,其中宽度和高度的值均为 16777215。

注意: 宏QWIDGETSIZE_MAX定义限制了控件的最大尺寸。

maximumWidth : int

此属性保存控件的最大宽度(以像素为单位)。

此属性与maximumSize 属性所持有的宽度相对应。

默认此属性值为 16777215。
注意: 宏QWIDGETSIZE_MAX定义限制了控件的最大尺寸。

minimized : const bool

此属性用于保存此控件是否最小化(图标化),此属性仅与 Windows 相关。
默认为false。

minimumHeight : int

此属性保存控件的最小高度(以像素为单位)。
此属性与属性minimumSize所持有的高度相对应。
默认值为 0。

minimumSize : QSize

此属性保存控件的最小尺寸,默认此属性包含的宽度和高度为零。
无法将控件的尺寸调整为小于最小控件尺寸的大小。如果当前尺寸较小,则控件的大小将被强制为最小尺寸。
此函数设置的最小尺寸将覆盖QLayout定义的最小尺寸。若要取消设置最小尺寸,请使用值 QSize(0, 0)。

minimumSizeHint : const QSize

此属性包含控件的建议最小尺寸。
如果此属性的值为无效尺寸,则不建议使用最小尺寸。
minimumSizeHint() 的默认实现如果此控件没有minimumSizeHint() 布局,则返回无效尺寸,否则返回布局的最小尺寸。大多数内置小部件都会重新实现 minimumSizeHint()。

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

minimumWidth : int

此属性保存控件的最小宽度(以像素为单位)。
此属性与属性minimumSize所持有的宽度相对应。
默认值为 0。

modal : const bool

是否为模式控件,默认为false。
此属性仅对 Windows 有意义。模式控件可防止其他窗口中的控件获取任何输入。

mouseTracking : bool

是否为控件启用鼠标跟踪。
如果禁用鼠标跟踪(默认),则仅当鼠标移动时按下至少一个鼠标按钮时,控件才能收到鼠标移动事件。
如果启用鼠标跟踪,则即使未按下任何按钮,控件也能收到鼠标移动事件。

normalGeometry : const QRect

此属性保存控件的几何图形,它在显示为普通(非最大化或全屏)的顶级控件时将显示。
如果控件已处于此状态,则普通几何开关将反映该控件的当前geometry()。
对于子控件,此属性始终包含一个空矩形。
默认情况下,此属性包含一个空矩形。

palette : QPalette

此属性保存控件的palette。参见:QPalette>

pos : QPoint

此属性用于保存控件在其父窗口中的位置。
如果控件是窗口,则返回控件包括其框架在桌面上的位置。
更改位置时,如果控件可见,它会立即收到移动事件(moveEvent())。如果小组件当前不可见,则保证在显示之前接收事件。
默认情况下,此属性包含引用原点的位置。
警告: 在moveEvent()中调用move()或setGeometry() 会导致无限递归。
有关窗口几何问题,请参阅Window Geometry 。

注意: 并非所有窗口系统都支持设置或查询顶级窗口位置。

rect : const QRect

此属性保存控件的内部几何图形,不包括窗口框架。
此rect 属性等于QRect(0, 0, width(), height())。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何图形。

size : QSize

此属性保存控件的尺寸,不包括窗口框架。
如果控件在调整大小时可见,则它会立即收到resizeEvent()事件。如果控件当前不可见,则保证在显示之前接收事件。
如果大小超出 minimumSize() and maximumSize()定义的范围,则调整大小。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何图形。
警告: 在resizeEvent() 中调用resize()或setGeometry() 会导致无限递归。
注意: 将大小设置为QSize(0, 0)将导致控件不显示在屏幕上。

sizeHint : const QSize

此属性包含控件的推荐尺寸。
如果此属性的值为无效大小,则不建议使用任何尺寸。

如果没有针对此控件的布局,则sizeHint()的默认实现将返回一个无效的大小,否则将返回该布局的首选大小。

sizeIncrement : QSize

此属性保存控件的尺寸增量。
当用户调整窗口大小时,将以 sizeIncrement()的步长移动。width() 像素水平、height() 像素垂直,以baseSize() 为基础。首选控件尺寸适用于非负整数 i 和 j:


注意,虽然可以设置所有控件的大小增量,但它只影响窗口。默认情况下,此属性包含的宽度和高度为0。
警告: 尺寸增量在 Windows 下不起作用,

sizePolicy : QSizePolicy

此属性保存控件的默认布局行为。
如果有一个QLayout管理此控件的子项,则使用该布局指定的大小策略。如果没有这样的 ,则使用此函数的结果。

默认策略是 Preferred/Preferred,这意味着控件可以自由调整大小,但首选是sizeHint() 。类似按钮的设置大小策略,以指定它们可以水平拉伸,但垂直固定。这同样适用于QLineEditQSpinBox或可编辑的QComboBox和其他水平方向的小部件(QProgressBar)。 QToolButton'通常是方形的,因此它们允许在两个方向上增长。支持不同方向的 Widget(如 QSliderQScrollBar or QHeader)仅以指定相应方向的拉伸。可以提供滚动条的小部件(通常是QScrollArea的子类)倾向于指定它们可以使用额外的空间,并且它们可以用小于sizeHint()的空间来凑合。

statusTip : QString

此属性保存控件的状态提示,默认为空字符串。

styleSheet : QString

此属性保存控件的样式表,样式表包含对控件样式自定义的文本描述。

详见:Qt Style Sheets
警告: 自定义子类目前不支持Qt样式表。

tabletTracking : bool

此属性用于保存是否为控件启用平板电脑跟踪。

toolTip : QString

此属性保存控件的工具提示,默认为空字符串。
默认情况下,工具提示仅显示作为活动窗口子级的控件。可以通过在window上设置Qt::WA_AlwaysShowToolTips属性来更改此行为,而不是在带有工具提示的widget上设置 tooltip 属性。
如果要控制工具提示的行为,可以截获 event()函数并捕获QEvent::ToolTip 事件(例如:自定义应该显示工具提示的区域)。

toolTipDuration : int

控件工具提示持续的时间,以毫秒为单位。如果该值为 -1(默认值),则根据工具提示的长度计算持续时间。

updatesEnabled : bool

是否启用更新,默认为true。
启用更新的控件接收绘制事件并具有系统背景,禁用的控件不会。这也意味着如果禁用更新,则调用 update()和repaint()不起作用。
setUpdatesEnabled()通常用于在短时间内禁用更新,例如避免在大型更改期间屏幕闪烁。在Qt中,控件通常不会产生屏幕闪烁,但在X11上,当控件在被其他控件替换之前被隐藏,服务器可能会擦除屏幕上的区域。禁用更新可以解决此问题。例:

禁用控件会隐式禁用其所有子项。启用控件将启用除顶级控件或已显式禁用的控件之外的所有子控件。重新启用更新会隐式调用 widget上的update() 。

visible : bool

是否可见。调用 setVisible(true) 或show()将控件设置为可见状态,如果控件在窗口之前的所有父控件都可见。如果祖先不可见,则在显示其所有祖先之前,控件不会变得可见。如果它的大小或位置发生了变化,Qt保证一个控件在显示之前得到移动和调整大小的事件。如果小部件尚未调整大小,Qt将使用adjustSize()将控件的大小调整为有用的默认值。
调用 setVisible(false) 或 hide() 会显式隐藏小部件。一个明确隐藏的控件永远不会变得可见,即使它的所有祖先都变得可见,除非你显示它。
当控件的可见性状态发生变化时,控件会接收显示和隐藏事件。在隐藏和显示事件之间,无需浪费 CPU 周期来准备或向用户显示信息。例如,视频应用程序可能只是停止生成新帧。

碰巧被屏幕上的其他窗口遮挡的控件被认为是可见的。这同样适用于图标化窗口和存在于另一个虚拟桌面上的窗口(在支持此概念的平台上)。当窗口系统更改其映射状态时,控件会接收自发的显示和隐藏事件,例如,当用户最小化窗口时会出现自发的隐藏事件,当窗口再次恢复时会收到自发的显示事件。
您很少需要重新实现 setVisible()函数。如果需要在显示控件之前更改某些设置,请改用showEvent()。如果需要进行一些延迟初始化,请使用传递给event()函数的 Polish 事件。

whatsThis : QString

此属性包含“What's This”帮助文本,默认包含空字符串。

width : const int

此属性保存控件的宽度,不包括窗口框架。

windowFilePath : QString

此属性保存与控件关联的文件路径,仅对 Windows 有意义。它将文件路径与窗口相关联。如果您设置了文件路径,但尚未设置窗口标题,则Qt会将窗口标题设置为指定路径的文件名,该文件名由()获取。
如果在任何时候设置了窗口标题,则窗口标题优先,并且将显示标题而不是文件路径字符串。
默认情况下,此属性包含空字符串。

windowFlags : Qt::WindowFlags

窗口标志是一个type(例如Qt::Dialog)和窗口系统的零个或多个提示(例如 Qt::FramelessWindowHint)的组合。
如果该控件的type是  Qt::Widget 或 Qt::SubWindow,并且是一个窗口(Qt::WindowQt::Dialog),它被放在桌面上的(0,0)位置。如果控件是一个窗口并变成 Qt::Widget 或Qt::SubWindow,则它处于相对于其父控件的(0,0)位置。

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

windowIcon : QIcon

此属性保存控件的图标,仅对 Windows 有意义。如果未设置图标,windowIcon() 将返回应用程序图标 (QApplication::windowIcon())。

windowModality : Qt::WindowModality

此属性包含模式控件阻止的窗口,仅对 Windows 有意义。模式控件可防止其他窗口中的控件获取输入。此属性的值控制当控件可见时阻止哪些窗口。在窗口可见时更改此属性不起作用,您必须先hide()控件,然后再次show() 它。

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

windowModified : bool

此属性保存窗口中显示的文档是否具有未保存的更改。
修改后的窗口是指内容已更改但尚未保存到磁盘的窗口。此标志将具有不同的效果,因平台而异。在 macOS 上,关闭按钮将具有修改后的外观,在其他平台上,窗口标题将带有“*”(星号)。
窗口标题必须包含“[*]”占位符,该占位符指示“*”应显示的位置。通常,它应该出现在文件名之后(例如:“document1.txt[*] - 文本编辑器”)。如果未修改窗口,则只需删除占位符即可。
注意,如果一个控件被设置为修改,它的所有祖先也将被设置为修改。但是,如果您在控件上调用 setWindowModified(false) ,这将不会传播到其父节点,因为父节点的其他子节点可能已被修改。

windowOpacity : double

此属性保存窗口的不透明度级别,默认1.0。

不透明度的有效范围是从 1.0(完全不透明)到 0.0(完全透明)。

警告: 将此属性从不透明更改为透明可能会发出 paintevent事件,需要在正确显示窗口之前进行处理。这主要影响QScreen::grabWindow()的使用。另请注意,半透明窗口的更新和调整大小明显慢于不透明窗口。

windowTitle : QString

此属性保存窗口标题(标题),仅对顶级控件(如窗口和对话框)有意义。如果未设置标题,则标题基于windowFilePath,如果两者都未设置,则标题为空字符串。
如果使用该 windowModified 机制,则窗口标题必须包含“[*]”占位符,该占位符指示“*”应显示的位置。
在某些桌面平台(包括 Windows 和 Unix)上,如果设置了应用程序名称 (来自 QGuiApplication::applicationDisplayName),则会添加到窗口标题的末尾。这是由 QPA 插件完成的,因此它会显示给用户,但不是 windowTitle 字符串的一部分。

x : const int

控件相对于其父级(包括任何窗口框架)的 x 坐标,默认为0。

y : const int

控件相对于其父级(包括任何窗口框架)的 y 坐标,默认为0。

【公有函数】

QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
构造一个widget,它是parent的子项,窗口标志设置为f。
如果parent为nullptr,则新widget将变为窗口。如果是另一个widget,则此widget将成为parent 中的子窗口。删除parent时,将删除该小widget。
widget flags 参数 , 通常为 0,但可以将其设置为自定义窗口的框架(即parent必须为nullptr )。要自定义这个frame,请使用由任何使用由任何窗口标志的按位OR组成的值。
如果将子widget添加到已经可见的widget,则必须显式显示该子widget以使其可见。
virtual~QWidget()销毁控件。首先删除此控件的所有子项。如果此控件是主widget,则应用程序将退出。
boolacceptDrops() const启用拖放
QStringaccessibleDescription() const残障辅助。
QStringaccessibleName() const残障辅助。
QList<QAction *>actions() const返回控件的Action列表(可能为空)。
voidactivateWindow()将包含此控件的顶级widget设置为活动窗口。活动窗口是具有键盘输入焦点的可见顶级窗口。
voidaddAction(QAction *action)

将参数中的操作action追加到此widget的操作列表中。

该函数的部分重载会将新创建的action操作作为返回值。

该函数的部分重载会创建一个带有文本、图标和快捷方式(如果有)的新action并返回。

QAction *addAction(const QString &text)
QAction *addAction(const QIcon &icon, const QString &text)
QAction *addAction(const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
QAction *addAction(const QString &text, Args &&... args)
QAction *addAction(const QIcon &icon, const QString &text, Args &&... args)
QAction *addAction(const QString &text, const QKeySequence &shortcut)
QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut)
QAction *addAction(const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
QAction *addAction(const QString &text, const QKeySequence &shortcut, Args &&... args)
QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, Args &&... args)
voidaddActions(const QList<QAction *> &actions)
voidadjustSize()调整控件的大小以适合其内容。
如果有效,则此函数使用 sizeHint() ,即大小提示的宽度和高度为 >= 0。否则,它将大小设置为覆盖所有子小部件的子矩形(所有子控件矩形的并集)。
对于 Windows,屏幕尺寸也被考虑在内。如果 sizeHint() 小于 (200, 100) 且大小策略为expanding,则窗口将至少为 (200, 100)。窗口的最大尺寸是屏幕宽度和高度的 2/3。
boolautoFillBackground() const返回是否自动填充控件背景。
QPalette::ColorRolebackgroundRole() const返回控件的背景角色。
背景角色定义了用于渲染widget背景的 palette中的笔刷。
QBackingStore *backingStore() const返回控件的绘画区域QBackingStore
QSizebaseSize() const返回控件的基本大小。
QWidget *childAt(int x, int y) const

返回位于widget坐标系统position (x, y)的子控件 。如果指定位置没有可见的子控件,则该函数将返回nullptr。

QWidget *childAt(const QPoint &p) const返回位于控件自身坐标系中的 p点处的可见子控件。
QRectchildrenRect() const返回控件子级的边界矩形。
QRegionchildrenRegion() const返回控件子项所占用的组合区域。
voidclearFocus()获取控件的键盘输入焦点。
如果控件具有焦点,则发送focus out event以告知它失去焦点。
此控件必须启用焦点设置才能获得键盘输入焦点,也就是说,它必须调用setFocusPolicy()。
voidclearMask()删除由setMask()设置的mask。
QMarginscontentsMargins() const返回控件的内容边距。
QRectcontentsRect() const返回控件边距内的区域。
Qt::ContextMenuPolicycontextMenuPolicy() const返回控件如何显示上下文菜单。
QCursorcursor() const返回控件光标形状。
WIdeffectiveWinId() const返回控件的有效窗口系统标识符,即原生父窗口的窗口系统标识符。
如果控件是原生的,则此函数返回本机控件 ID。 否则,将返回第一个本机父控件的窗口 ID,即包含此控件的顶级控件。
注意: 建议不要存储此值,因为它可能会在运行时更改。
voidensurePolished() const确保控件及其子项已经美化过,即具有适当的字体和调色板。
QWidget 在完全构造之后,但在第一次显示之前调用此函数。如果要确保在执行操作之前对控件进行润色,则可以调用此函数,例如,在控件的sizeHint()  重新实现正确的字体大小。注意,此函数是从sizeHint()的默认实现中调用的。
修整对于调用所有构造函数(来自基类和子类)之后必须进行的最终初始化非常有用。
如果在完善控件时需要更改某些设置,请重新实现event() 并处理QEvent::Polish 事件类型。
注意:该函数被声明为 const,以便可以从其他 const 函数(例如sizeHint())调用它。
Qt::FocusPolicyfocusPolicy() const返回控件接受键盘焦点的方式。
QWidget *focusProxy() const
QWidget *focusWidget() const
const QFont &font() const返回控件设置的字体。
QFontInfofontInfo() const
QFontMetricsfontMetrics() const
QPalette::ColorRoleforegroundRole() const
QRectframeGeometry() const返回控件相对于其父项的几何图形,包括窗口框架。
QSizeframeSize() const返回控件的大小,包括窗口框架。
const QRect &geometry() const返回控件相对于其父项的几何图形,但不包括窗口框架。
QPixmapgrab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
voidgrabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())
voidgrabKeyboard()
voidgrabMouse()
voidgrabMouse(const QCursor &cursor)
intgrabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
QGraphicsEffect *graphicsEffect() const
QGraphicsProxyWidget *graphicsProxyWidget() const
boolhasEditFocus() const
boolhasFocus() const
virtual boolhasHeightForWidth() const
boolhasMouseTracking() const
boolhasTabletTracking() const
intheight() const
virtual intheightForWidth(int w) const
Qt::InputMethodHintsinputMethodHints() const
virtual QVariantinputMethodQuery(Qt::InputMethodQuery query) const
voidinsertAction(QAction *before, QAction *action)
voidinsertActions(QAction *before, const QList<QAction *> &actions)
boolisActiveWindow() const返回包含控件的窗口是否为活动窗口。
boolisAncestorOf(const QWidget *child) const
boolisEnabled() const
boolisEnabledTo(const QWidget *ancestor) const
boolisFullScreen() const
boolisHidden() const
boolisMaximized() const返回widget是否最大化。
boolisMinimized() const返回widget是否最小化。
boolisModal() const
boolisVisible() const
boolisVisibleTo(const QWidget *ancestor) const
boolisWindow() const
boolisWindowModified() const
QLayout *layout() const
Qt::LayoutDirectionlayoutDirection() const返回控件的布局方向。
QLocalelocale() const返回控件的区域设置。
QPointFmapFrom(const QWidget *parent, const QPointF &pos) const将控件坐标pos转换为parent控件的坐标系。parent不能为nullptr,并且必须是调用控件的父级。
QPointmapFrom(const QWidget *parent, const QPoint &pos) const
QPointFmapFromGlobal(const QPointF &pos) const将全局屏幕坐标pos转换为控件坐标。
QPointmapFromGlobal(const QPoint &pos) const
QPointFmapFromParent(const QPointF &pos) const将坐标pos转换为父控件坐标。
如果控件没有父级,则与mapFromGlobal() 相同。
QPointmapFromParent(const QPoint &pos) const
QPointFmapTo(const QWidget *parent, const QPointF &pos) const
QPointmapTo(const QWidget *parent, const QPoint &pos) const
QPointFmapToGlobal(const QPointF &pos) const
QPointmapToGlobal(const QPoint &pos) const
QPointFmapToParent(const QPointF &pos) const
QPointmapToParent(const QPoint &pos) const
QRegionmask() const返回当前在控件上设置的mask。如果未设置,则返回空区域。
intmaximumHeight() const
QSizemaximumSize() const返回控件的最大尺寸。
intmaximumWidth() const返回控件的最大宽度。
intminimumHeight() const返回控件的最大高度。
QSizeminimumSize() const返回控件的最小尺寸。
virtual QSizeminimumSizeHint() const返回控件建议的最小尺寸。
intminimumWidth() const返回控件的最小宽度。
voidmove(const QPoint &)
voidmove(int x, int y)
QWidget *nativeParentWidget() const
QWidget *nextInFocusChain() const
QRectnormalGeometry() const
voidoverrideWindowFlags(Qt::WindowFlags flags)
const QPalette &palette() const返回控件的palette。
QWidget *parentWidget() const
QPointpos() const返回控件相对于父控件或桌面的位置。
QWidget *previousInFocusChain() const
QRectrect() const返回控件内部几何图形,不包括窗口框架。
voidreleaseKeyboard()
voidreleaseMouse()
voidreleaseShortcut(int id)
voidremoveAction(QAction *action)
voidrender(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
voidrender(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
voidrepaint(int x, int y, int w, int h)
voidrepaint(const QRect &rect)
voidrepaint(const QRegion &rgn)
voidresize(const QSize &)返回控件大小。
voidresize(int w, int h)
boolrestoreGeometry(const QByteArray &geometry)
QByteArraysaveGeometry() const
QScreen *screen() const
voidscroll(int dx, int dy)
voidscroll(int dx, int dy, const QRect &r)
voidsetAcceptDrops(bool on)
voidsetAccessibleDescription(const QString &description)
voidsetAccessibleName(const QString &name)
voidsetAttribute(Qt::WidgetAttribute attribute, bool on = true)
voidsetAutoFillBackground(bool enabled)
voidsetBackgroundRole(QPalette::ColorRole role)
voidsetBaseSize(const QSize &)
voidsetBaseSize(int basew, int baseh)
voidsetContentsMargins(int left, int top, int right, int bottom)
voidsetContentsMargins(const QMargins &margins)
voidsetContextMenuPolicy(Qt::ContextMenuPolicy policy)
voidsetCursor(const QCursor &)
voidsetEditFocus(bool enable)
voidsetFixedHeight(int h)
voidsetFixedSize(const QSize &s)
voidsetFixedSize(int w, int h)
voidsetFixedWidth(int w)
voidsetFocus(Qt::FocusReason reason)
voidsetFocusPolicy(Qt::FocusPolicy policy)
voidsetFocusProxy(QWidget *w)
voidsetFont(const QFont &)
voidsetForegroundRole(QPalette::ColorRole role)
voidsetGeometry(const QRect &)
voidsetGeometry(int x, int y, int w, int h)
voidsetGraphicsEffect(QGraphicsEffect *effect)
voidsetInputMethodHints(Qt::InputMethodHints hints)
voidsetLayout(QLayout *layout)
voidsetLayoutDirection(Qt::LayoutDirection direction)
voidsetLocale(const QLocale &locale)
voidsetMask(const QBitmap &bitmap)
voidsetMask(const QRegion &region)
voidsetMaximumHeight(int maxh)
voidsetMaximumSize(const QSize &)
voidsetMaximumSize(int maxw, int maxh)
voidsetMaximumWidth(int maxw)
voidsetMinimumHeight(int minh)
voidsetMinimumSize(const QSize &)
voidsetMinimumSize(int minw, int minh)
voidsetMinimumWidth(int minw)
voidsetMouseTracking(bool enable)
voidsetPalette(const QPalette &)
voidsetParent(QWidget *parent)指定Parent。
voidsetParent(QWidget *parent, Qt::WindowFlags f)指定父控件。
voidsetScreen(QScreen *screen)
voidsetShortcutAutoRepeat(int id, bool enable = true)
voidsetShortcutEnabled(int id, bool enable = true)
voidsetSizeIncrement(const QSize &)
voidsetSizeIncrement(int w, int h)
voidsetSizePolicy(QSizePolicy)
voidsetSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
voidsetStatusTip(const QString &)
voidsetStyle(QStyle *style)
voidsetTabletTracking(bool enable)
voidsetToolTip(const QString &)设置工具提示。
voidsetToolTipDuration(int msec)
voidsetUpdatesEnabled(bool enable)
voidsetWhatsThis(const QString &)
voidsetWindowFilePath(const QString &filePath)
voidsetWindowFlag(Qt::WindowType flag, bool on = true)
voidsetWindowFlags(Qt::WindowFlags type)
voidsetWindowIcon(const QIcon &icon)
voidsetWindowModality(Qt::WindowModality windowModality)
voidsetWindowOpacity(qreal level)
voidsetWindowRole(const QString &role)
voidsetWindowState(Qt::WindowStates windowState)
voidsetupUi(QWidget *widget)
QSizesize() const返回窗口尺寸。
virtual QSizesizeHint() const
QSizesizeIncrement() const
QSizePolicysizePolicy() const
voidstackUnder(QWidget *w)
QStringstatusTip() const
QStyle *style() const
QStringstyleSheet() const
booltestAttribute(Qt::WidgetAttribute attribute) const
QStringtoolTip() const返回工具提示。
inttoolTipDuration() const
boolunderMouse() const
voidungrabGesture(Qt::GestureType gesture)
voidunsetCursor()
voidunsetLayoutDirection()
voidunsetLocale()
voidupdate(int x, int y, int w, int h)update() 更新控件,除非禁用更新或隐藏控件。
此函数不会导致立即重绘,当Qt返回主事件循环时,它会安排一个paint event进行处理。
这三个重载只更新控件内的矩形。 
voidupdate(const QRect &rect)
voidupdate(const QRegion &rgn)
voidupdateGeometry()

通知layout布局系统此控件已更改,可能需要更新几何图形。

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

对于显式隐藏的小部件,updateGeometry() 是一个 no-op禁止操作。一旦显示控件,布局系统将收到通知。

boolupdatesEnabled() const
QRegionvisibleRegion() const
QStringwhatsThis() const
intwidth() const
WIdwinId() const
QWidget *window() const

返回此控件的窗口,即具有(或可能具有)窗口系统框架的下一个祖先控件。
如果控件是窗口,则返回控件本身。
典型的用法是更改窗口标题:

aWidget->window()->setWindowTitle("New Window Title");
QStringwindowFilePath() const
Qt::WindowFlagswindowFlags() const
QWindow *windowHandle() const
QIconwindowIcon() const返回图标。
Qt::WindowModalitywindowModality() const
qrealwindowOpacity() const返回窗口透明度。
QStringwindowRole() const返回窗口的角色或空字符串。
Qt::WindowStateswindowState() const返回窗口状态。
QStringwindowTitle() const
Qt::WindowTypewindowType() const
intx() const
inty() const

【重新实现的虚函数】

  virtual QPaintEngine *paintEngine() const override 【>>>


【槽函数】

boolclose()关闭
voidhide()隐藏
voidlower()将部件降低到父部件堆栈的底部。
voidraise()

将部件降低到父部件堆栈的顶部。

voidrepaint()

立即调用 paintEvent()重绘控件,除非禁用更新或隐藏控件。

建议仅在需要立即重绘时才使用repaint() ,例如在动画期间。大多数情况下,update()更好,因为它允许Qt优化速度并最小化闪烁。

警告: 如果你在一个函数中调用repaint() ,而这个函数本身可能是从paintEvent()调用的,你可能会得到无限递归。 update() 函数永远不会导致递归。

voidsetDisabled(bool disable)如果为 true,则禁用控件输入事件;否则启用输入事件。
voidsetEnabled(bool)设置可用性。
voidsetFocus()设置焦点。
voidsetHidden(bool hidden)等价于setVisible(!hidden)
voidsetStyleSheet(const QString &styleSheet)设置样式表。
virtual voidsetVisible(bool visible)设置可见性。
voidsetWindowModified(bool)设置保存窗口中显示的文档是否具有未保存的更改。
voidsetWindowTitle(const QString &)设置窗口标题(标题)。
voidshow()显示控件及子控件。这等效于调用 showFullScreen(), showMaximized(), setVisible(true),具体取决于平台对窗口标志的默认行为。
voidshowFullScreen()以全屏模式显示控件。调用此函数只会影响windows。要从全屏模式返回,请调用 showNormal() or close()。
voidshowMaximized()显示最大化的控件。
voidshowMinimized()将最小化的控件显示为图标。调用此函数只会影响windows 。
voidshowNormal()在最大化或最小化后恢复控件。
voidupdate()更新控件,除非禁用更新或隐藏控件。
此功能不会立即重绘;相反,当Qt返回主事件循环时,它会安排一个paintevent事件进行处理。这允许Qt优化,以获得比调用repaint() 更快的速度和更少的闪烁。
多次调用 update() 通常只会导致一个paintEvent()调用。
Qt通常会在paintEvent()调用之前擦除控件的区域。如果设置了 widget 属性,则 widget 负责用不透明颜色绘制其所有像素。

【信号】

voidcustomContextMenuRequested(const QPoint &pos)
voidwindowIconChanged(const QIcon &icon)
voidwindowTitleChanged(const QString &title)

【静态公有成员】

QWidget *createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
QWidget *find(WId id)
QWidget *keyboardGrabber()
QWidget *mouseGrabber()
voidsetTabOrder(QWidget *first, QWidget *second)
voidsetTabOrder(std::initializer_list<QWidget *> widgets)

【受保护的函数】

virtual voidactionEvent(QActionEvent *event)事件处理器函数。
virtual voidchangeEvent(QEvent *event)事件处理器函数。
virtual voidcloseEvent(QCloseEvent *event)

处理关闭事件的事件处理器函数。

默认行为是关闭件。可以重新实现此函数以更改控件响应窗口关闭请求的方式。例如,您可以通过调用ignore() 来阻止窗口关闭。

主窗口应用程序通常使用此函数的重新实现来检查用户的工作是否已保存,并在关闭之前请求许可。【示例

virtual voidcontextMenuEvent(QContextMenuEvent *event)“上下文菜单事件”事件处理器函数。
voidcreate(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true)创建一个新的组件窗口。
voiddestroy(bool destroyWindow = true, bool destroySubWindows = true)释放窗口系统资源。如果为 true,则销毁控件窗口。
destroy() 以递归方式调用所有子控件的自身,传递参数。
此函数通常从析构函数调用。
virtual voiddragEnterEvent(QDragEnterEvent *event)“拖拽某控件进入widget的瞬间”事件处理器函数。
virtual voiddragLeaveEvent(QDragLeaveEvent *event)”拖拽某控件离开widget的瞬间“事件处理器函数。
virtual voiddragMoveEvent(QDragMoveEvent *event)“拖拽某控件时持续触发”事件处理器函数。
virtual voiddropEvent(QDropEvent *event)“拖拽某控件的释放瞬间”事件处理器函数。
virtual voidenterEvent(QEnterEvent *event)

“光标进入控件瞬间”的事件处理器函数。

注意:参数中的QEnterEvent类是QT6新增的。

virtual voidfocusInEvent(QFocusEvent *event)“获得焦点”事件处理器函数。
boolfocusNextChild()查找按下键盘Tab后焦点指向的新控件,如果能找到返回true,找不到返回 false。
virtual boolfocusNextPrevChild(bool next)查找要为键盘提供焦点的新控件(适合Tab和Shift+Tab),如果能找返回 true,找不到返回 false。
如果next 为 true,则此函数向前搜索,如果next 为 false,则向后搜索。
有时,您需要重新实现此功能。例如,Web 浏览器可能会重新实现它以向前或向后移动其“当前活动链接”,并且仅在它到达“页面”上的最后一个或第一个链接时才调用 focusNextPrevChild()。
子控件在其父控件上调用 focusNextPrevChild(),但只有包含子控件的窗口才能决定将焦点重定向到何处。通过为对象重新实现此功能,您可以控制所有子控件的焦点遍历。
virtual voidfocusOutEvent(QFocusEvent *event)“失去焦点”事件处理器函数。
boolfocusPreviousChild()查找按下键盘Shift+Tab后焦点指向的新控件,如果能找到返回true,找不到返回 false
virtual voidhideEvent(QHideEvent *event)“当窗口或控件被隐藏”事件处理器函数。
virtual voidinputMethodEvent(QInputMethodEvent *event)事件处理器函数。
virtual voidkeyPressEvent(QKeyEvent *event)“键盘上某键被按下”事件处理器函数。
virtual voidkeyReleaseEvent(QKeyEvent *event)“键盘上某键被释放”事件处理器函数。
virtual voidleaveEvent(QEvent *event)“光标离开控件瞬间”事件处理器函数。
virtual voidmouseDoubleClickEvent(QMouseEvent *event)“双击鼠标”事件处理器函数。
virtual voidmouseMoveEvent(QMouseEvent *event)“按着鼠标移动或不按着鼠标移动时”事件处理器函数。
virtual voidmousePressEvent(QMouseEvent *event)“按下鼠标键时”事件处理器函数。(不区分左中右键)
virtual voidmouseReleaseEvent(QMouseEvent *event)“松开鼠标键时”事件处理器函数。
virtual voidmoveEvent(QMoveEvent *event)”移动窗口“事件处理器函数。
virtual boolnativeEvent(const QByteArray &eventType, void *message, qintptr *result)事件处理器函数。
virtual void
paintEvent(QPaintEvent *event)

事件处理器函数。

此事件处理程序可以在子类中重新实现,以接收在事件中传递的绘图事件。

绘图事件是对重新绘制控件的全部或部分的请求。会因以下原因被调用:

> 调用了重绘repaint()或update() 

> 控件被遮挡,现在又重新显示

> 改变窗口大小等

许多控件可以在事件发生时简单地重绘其整个表面,但一些缓慢的控件可以通过QPaintEvent::region() 仅绘制请求的区域来优化。这种速度优化不会改变结果,因为在事件处理期间,绘画会被裁剪到该区域。QListViewQTableView经常这样做。

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

当绘制事件发生时,更新区域通常已被擦除,因此您是在控件的背景上绘制。背景可以使用设置setBackgroundRole()和setPalette().

virtual voidresizeEvent(QResizeEvent *event)

当控件具有新的尺寸时调用此事件处理器函数。

可以通过QResizeEvent::oldSize()访问旧尺寸。

在处理这个事件后,控件将被擦除并立即接收一个paintEvent事件。

示例

virtual voidshowEvent(QShowEvent *event)“当窗口或控件被显示”事件处理器函数。
virtual voidtabletEvent(QTabletEvent *event)事件处理器函数。
virtual voidwheelEvent(QWheelEvent *event)“鼠标滚轮转动事件”事件处理器函数。

【重新实现的保护成员函数】

virtual boolevent(QEvent *event) override
virtual voidinitPainter(QPainter *painter) const override
virtual intmetric(QPaintDevice::PaintDeviceMetric m) const override

【受保护的槽】

voidupdateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll)
更新控件的焦点,并通知输入法指定的query状态已更改。

【宏】

QWIDGETSIZE_MAX定义对象的最大大小。控件允许的最大大小为 (QWIDGETSIZE_MAX, QWIDGETSIZE_MAX),即 (16777215,16777215)。

<<< 返回根页面

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值