QWidget类
Properties
acceptDrops : bool
当您要通过第三方信号/插槽机制使用Qt信号和插槽时,请使用此宏替换类声明中的slot关键字。
通常在.pro文件中使用CONFIG变量指定no_keywords时使用该宏,但是即使未指定no_keywords时也可以使用该宏。
访问功能:
bool acceptDrops() const
void setAcceptDrops(bool on)
另请参见拖放。
accessibleDescription : QString
此属性保存辅助技术所看到的小部件的描述。
小部件的可访问描述应传达小部件的功能。
尽管accessibleName应该是简短的字符串(例如,保存),但说明应提供更多上下文,例如保存当前文档。
此属性必须本地化。默认情况下,此属性包含一个空字符串,并且Qt退回到使用工具提示来提供此信息。
访问功能:
QString accessibleDescription() const
void setAccessibleDescription(const QString &description)
另请参见QWidget :: accessibleName和QAccessibleInterface :: text()。
accessibleName : QString
此属性保存辅助技术看到的窗口小部件的名称。
这是诸如屏幕阅读器之类的辅助技术宣布此窗口小部件的主要名称。
对于大多数窗口小部件,不需要设置此属性。例如,对于QPushButton,将使用按钮的文本。
当窗口小部件不提供任何文本时,设置此属性很重要。例如,仅包含图标的按钮需要设置此属性才能与屏幕阅读器一起使用。该名称应简短,并且与小部件传达的视觉信息等效。此属性必须本地化。默认情况下,此属性包含一个空字符串。
访问功能:
QString accessibleName() const
void setAccessibleName(const QString &name)
另请参见QWidget :: accessibleDescription和QAccessibleInterface :: text()。
autoFillBackground : bool
此属性保存是否自动填充窗口小部件背景如果启用,此属性将导致Qt在调用paint事件之前填充窗口小部件的背景。
使用的颜色由小部件调色板中的QPalette :: Window颜色角色定义。
此外,除非设置了WA_OpaquePaintEvent或WA_NoSystemBackground属性,否则Windows始终会用QPalette :: Window填充。
如果小部件的父级对其背景具有静态渐变,则无法关闭此属性(即,将其设置为false)。警告:请谨慎使用此属性和Qt样式表。
当窗口小部件的样式表具有有效的背景或边框图像时,将自动禁用此属性。默认情况下,此属性为false。此属性在Qt 4.1中引入。
访问功能:
bool autoFillBackground() const
void setAutoFillBackground(bool enabled)
另请参见Qt :: WA_OpaquePaintEvent,Qt :: WA_NoSystemBackground以及透明和双缓冲。
baseSize : QSize
此属性保存小部件的基本大小。如果小部件定义sizeIncrement(),则基本大小用于计算适当的小部件大小。
默认情况下,对于新创建的小部件,此属性包含一个宽度和高度为零的大小。
访问功能:
QSize baseSize() const
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)
另请参见setSizeIncrement()。
childrenRect : const QRect
此属性保存小部件的子项的边界矩形。不包括隐藏的子项。默认情况下,对于没有子代的小部件,此属性包含一个位于原点的宽度和高度为零的矩形。
访问功能:
QRect childrenRect() const
另请参见childrenRegion()和geometry()。
childrenRegion : const QRegion
此属性保存由小部件的子项占据的合并区域。不包括隐藏子项。默认情况下,对于没有子代的窗口小部件,此属性包含一个空白区域。
访问功能:
QRegion childrenRegion() const
另请参见childrenRect(),geometry()和mask()。
contextMenuPolicy : Qt::ContextMenuPolicy
窗口小部件如何显示上下文菜单。此属性的默认值为Qt :: DefaultContextMenu,这意味着将调用contextMenuEvent()处理函数。
其他值是Qt :: NoContextMenu,Qt :: PreventContextMenu,Qt :: ActionsContextMenu和Qt :: CustomContextMenu。
使用Qt :: CustomContextMenu,将发出信号customContextMenuRequested()。
访问功能:
Qt::ContextMenuPolicy contextMenuPolicy() const
void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
另请参见contextMenuEvent(),customContextMenuRequested()和actions()。
cursor : QCursor
此属性保存此小部件的光标形状鼠标光标悬停在此小部件上时将采用此形状。有关一系列有用形状的信息,请参见预定义光标对象的列表。
编辑器小部件可能使用I型光标:
如果未设置游标,或者在调用unsetCursor()之后,将使用父级的游标。
默认情况下,此属性包含具有Qt :: ArrowCursor形状的光标。如果鼠标离开小部件,即使鼠标被抓住,某些基础窗口实现也会重置游标。
如果要为所有窗口小部件设置光标,即使在窗口外,也可以考虑QGuiApplication :: setOverrideCursor()。
访问功能:
QCursor cursor() const
void setCursor(const QCursor &)
void unsetCursor()
另请参见QGuiApplication :: setOverrideCursor()。
enabled : bool
此属性保存是否启用了窗口小部件。
通常,已启用的窗口小部件处理键盘和鼠标事件。禁用的小部件则不会。 QAbstractButton例外。某些小部件在禁用时会以不同的方式显示。例如,按钮可能会将其标签绘制为灰色。
如果您的小部件需要知道何时启用或禁用它,则可以将changeEvent()与QEvent :: EnabledChange类型一起使用。禁用小部件会隐式禁用其所有子项。
分别启用所有子控件,除非已明确禁用它们。当其父窗口小部件保持禁用状态时,不可能显式启用不是窗口的子窗口小部件。
默认情况下,此属性为true。
访问功能:
bool isEnabled() const
void setEnabled(bool)
另请参见isEnabledTo(),QKeyEvent,QMouseEvent和changeEvent()。
focus : const bool
此属性保存此小部件(或其焦点代理)是否具有键盘输入焦点。
默认情况下,此属性为false。注意:为窗口小部件获取此属性的值实际上等效于检查QApplication :: focusWidget()是否引用窗口小部件。
访问功能:
bool hasFocus() const
另请参见setFocus(),clearFocus(),setFocusPolicy()和QApplication :: focusWidget()。
focusPolicy : Qt::FocusPolicy
此属性保留窗口小部件接受键盘焦点的方式。
如果窗口小部件通过制表符接受键盘焦点,则策略为Qt :: TabFocus;如果窗口小部件通过单击接受焦点,则策略为Qt :: ClickFocus;如果窗口小部件同时接受焦点,则策略为Qt :: StrongFocus和Qt: :NoFocus(默认),如果它根本不接受焦点。
如果小部件处理键盘事件,则必须为其启用键盘焦点。通常这是通过小部件的构造函数完成的。例如,QLineEdit构造函数调用setFocusPolicy(Qt :: StrongFocus)。
如果小部件具有焦点代理,则焦点策略将传播给它。
访问功能:
Qt::FocusPolicy focusPolicy() const
void setFocusPolicy(Qt::FocusPolicy policy)
另请参见focusInEvent(),focusOutEvent(),keyPressEvent(),keyReleaseEvent()和启用。
font : QFont
此属性保存当前为小部件设置的字体。此属性描述小部件的请求字体。
呈现标准组件时,小部件的样式使用该字体,并且该字体可用来确保自定义小部件可以保持与本机平台外观的一致性。
通常,不同的平台或不同的样式会为应用程序定义不同的字体。当您为窗口小部件分配新字体时,该字体的属性将与窗口小部件的默认字体组合在一起以形成窗口小部件的最终字体。
您可以调用fontInfo()以获得小部件最终字体的副本。最终字体也用于初始化QPainter的字体。默认值取决于系统环境。 QApplication维护一种系统/主题字体,它是所有小部件的默认字体。
对于某些类型的小部件,可能还会有特殊的字体默认值。您还可以通过将自定义字体和窗口小部件的名称传递给QApplication :: setFont()来为窗口小部件定义默认字体。最后,将字体与Qt的字体数据库进行匹配以找到最佳匹配。
QWidget将显式字体属性从父级传播到子级。如果您更改字体的特定属性并将该字体分配给窗口小部件,则该属性将传播到窗口小部件的所有子级,从而覆盖该属性的所有系统默认值。
请注意,默认情况下,除非启用了Qt :: WA_WindowPropagation属性,否则字体不会传播到窗口(请参见isWindow())。
QWidget的字体传播类似于其调色板传播。当前样式用于呈现所有标准Qt小部件的内容,可以自由选择使用小部件字体,或者在某些情况下可以忽略(部分或完全)它。特别是,某些样式(例如GTK样式,Mac样式和Windows Vista样式)会对小部件字体进行特殊修改,以匹配平台的本机外观。因此,不能保证将属性分配给窗口小部件的字体会更改窗口小部件的外观。相反,您可以选择应用styleSheet。
注意:如果Qt样式表与setFont()在同一小部件上使用,则如果设置冲突,样式表将优先。
访问函数:
const QFont & font() const
void setFont(const QFont &)
另请参见fontInfo()和fontMetrics()。
frameGeometry : const QRect
小部件相对于其父级(包括任何窗口框架)的几何形状有关窗口几何问题的概述,请参见“窗口几何”文档。默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:
QRect frameGeometry() const
另请参见geometry(),x(),y()和pos()。
frameSize : const QSize
此属性保存包含任何窗口框架的窗口小部件的大小。默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
访问功能:
QSize frameSize() const
fullScreen : const bool
此属性保存是否以全屏模式显示窗口小部件。处于全屏模式的窗口小部件占据整个屏幕区域,并且不显示窗口装饰,例如标题栏。默认情况下,此属性为false。
访问函数:
bool isFullScreen() const
另请参见windowState(),minimized和maximized。
geometry : QRect
此属性保存窗口小部件相对于其父窗口的几何形状,但不包括窗口框架。
更改几何时,窗口小部件(如果可见)立即接收到移动事件(moveEvent())和/或调整大小事件(resizeEvent())。
如果窗口小部件当前不可见,则可以确保在显示窗口小部件之前先接收适当的事件。
如果大小分量超出由minimumSize()和maximumSize()定义的范围,则将对其进行调整。
警告:在resizeEvent()或moveEvent()中调用setGeometry()可能导致无限递归。有关Windows几何问题的概述,请参见“窗口几何”文档。
默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:
const QRect & geometry() const
void setGeometry(int x, int y, int w, int h)
void setGeometry(const QRect &)
另请参见frameGeometry(),rect(),move(),resize(), moveEvent(),resizeEvent(),minimumSize()和maximumSize()。
height : const int
此属性保存窗口小部件的高度,不包括任何窗口框架。
有关窗口的几何问题的概述,请参见“窗口几何”文档。
注意:请勿使用此功能在多屏幕桌面上查找屏幕的高度。
请阅读此说明以获取详细信息。默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:int height()const
另请参见See also geometry, width, and size.
inputMethodHints : Qt::InputMethodHints
特定于输入法的提示提示小部件具有的内容。这仅与输入窗口小部件有关。输入法使用它来检索有关输入法应如何操作的提示。
例如,如果设置了Qt :: ImhFormattedNumbersOnly标志,则输入法可能会更改其可视组件以反映只能输入数字。警告:某些小部件需要某些标志才能正常工作。要设置标志,请执行w-> setInputMethodHints(w-> inputMethodHints()| f)而不是w-> setInputMethodHints(f)。
注意:标志只是提示,因此特定的输入法实现可以随意忽略它们。如果要确保输入了某种类型的字符,则还应该在小部件上设置QValidator。默认值为Qt :: ImhNone。此属性在Qt 4.6中引入。
访问函数:
Qt::InputMethodHints inputMethodHints() const
void setInputMethodHints(Qt::InputMethodHints hints)
另请参见inputMethodQuery()。
isActiveWindow : const bool
此属性保存此窗口小部件的窗口是否为活动窗口。活动窗口是包含具有键盘焦点的窗口小部件的窗口(如果该窗口小部件不包含窗口小部件,或者该窗口小部件都不接受键盘焦点,则该窗口可能仍具有焦点)。
当弹出窗口可见时,此属性对于活动窗口和弹出窗口均为true。默认情况下,此属性为false。
访问函数:
bool isActiveWindow() const
另请参见activateWindow()和QApplication :: activeWindow()。
layoutDirection : Qt::LayoutDirection
此属性保存此窗口小部件的布局方向。
默认情况下,此属性设置为Qt :: LeftToRight。在窗口小部件上设置布局方向时,它将传播到窗口小部件的子级,但不会传播到窗口的子级,也不会传播到已为其显式调用setLayoutDirection()的子级。另外,在为父级调用setLayoutDirection()之后添加的子级小部件不会继承父级的布局方向。
从Qt 4.7开始,此方法不再影响文本布局方向。
访问函数:
Qt::LayoutDirection layoutDirection() const
void setLayoutDirection(Qt::LayoutDirection direction)
void unsetLayoutDirection()
另请参见QApplication :: layoutDirection。
locale : QLocale
此属性保存窗口小部件的语言环境,只要未设置特殊的语言环境,就可以是父级的语言环境,也可以是默认语言环境(如果此窗口小部件是顶级窗口小部件)。
如果窗口小部件显示日期或数字,则应使用窗口小部件的语言环境设置日期或数字的格式。
此属性在Qt 4.3中引入。
访问函数:
QLocale locale() const
void setLocale(const QLocale &locale)
void unsetLocale()
另请参见QLocale和QLocale :: setDefault()。
maximized : const bool
此属性保存此窗口小部件是否最大化。此属性仅与Windows有关。
注意:由于某些窗口系统的限制,它并不总是报告预期的结果(例如,如果X11上的用户通过窗口管理器最大化窗口,则Qt无法将其与任何其他调整大小区分开)。随着窗口管理器协议的发展,这种情况有望得到改善。
默认情况下,此属性为false。
访问函数:
bool isMaximized() const
另请参见windowState(),showMaximized(),visible,show(),hide(),showNormal()和minimized。
maximumHeight : int
此属性保存窗口小部件的最大高度(以像素为单位)。
此属性对应于maximumSize属性保持的高度。默认情况下,此属性包含一个值16777215。
注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。
访问功能:
int maximumHeight() const
void setMaximumHeight(int maxh)
另请参见 maximumSize 和maximumWidth.
maximumSize : QSize
此属性保存窗口小部件的最大大小(以像素为单位)。不能将窗口小部件的大小调整为大于窗口小部件的最大大小。
默认情况下,此属性包含的大小的宽度和高度的值均为16777215。
注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。
访问功能:
QSize maximumSize() const
void setMaximumSize(const QSize &)
void setMaximumSize(int maxw, int maxh)
另请参见 maximumWidth, maximumHeight, minimumSize, 和sizeIncrement.
maximumWidth : int
此属性保存窗口小部件的最大宽度(以像素为单位)。
此属性对应于maximumSize属性所保持的宽度。默认情况下,此属性包含一个值16777215。
注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。
访问功能:
int maximumWidth() const
void setMaximumWidth(int maxw)
另请参见 maximumSize 和maximumHeight.
minimized : const bool
此属性保存是否最小化(图标化)此窗口小部件。此属性仅与Windows有关。默认情况下,此属性为false。
访问功能:
bool isMinimized() const
另请参见 showMinimized(), visible, show(), hide(), showNormal(), 和maximized.
minimumHeight : int
此属性保存窗口小部件的最小高度(以像素为单位)。
此属性对应于minimumSize属性保持的高度。
默认情况下,此属性的值为0。
访问函数:
int minimumHeight() const
void setMinimumHeight(int minh)
另请参见 minimumSize 和minimumWidth.
minimumSize : QSize
此属性保存窗口小部件的最小大小。无法将窗口小部件的大小调整为小于窗口小部件的最小大小。
如果当前大小较小,则将小部件的大小强制为最小大小。此函数设置的最小大小将覆盖QLayout定义的最小大小。为了取消设置最小大小,请使用QSize(0,0)的值。
默认情况下,此属性包含一个宽度和高度为零的大小。
访问功能:
QSize minimumSize() const
void setMinimumSize(const QSize &)
void setMinimumSize(int minw, int minh)
另请参见minimumWidth, minimumHeight, maximumSize, 和 sizeIncrement.
minimumSizeHint : const QSize
此属性保存建议的窗口小部件最小尺寸。如果此属性的值是无效尺寸,则不建议使用最小尺寸。
如果没有此小部件的布局,minimumSizeHint()的默认实现将返回无效的大小,否则,将返回布局的最小大小。
大多数内置窗口小部件会重新实现minimumSizeHint()。
除非设置了minimumSize()或将大小策略设置为QSizePolicy :: Ignore,否则QLayout绝不会将窗口小部件的大小调整为小于最小大小提示。
如果设置了minimumSize(),则最小尺寸提示将被忽略。
访问功能:
virtual QSize minimumSizeHint() const
另请参见 QSize::isValid(), resize(), setMinimumSize(), 和 sizePolicy().
Public Slots
bool QWidget::close()
关闭此小部件。如果窗口小部件已关闭,则返回true;否则,返回false。
首先,它向小部件发送QCloseEvent。
如果小部件接受关闭事件,则将其隐藏。如果它忽略该事件,则什么也不会发生。 QWidget :: closeEvent()的默认实现接受close事件。
如果窗口小部件具有Qt :: WA_DeleteOnClose标志,则该窗口小部件也将被删除。无论小部件是否可见,关闭事件都会传递给小部件。当最后一个设置了Qt :: WA_QuitOnClose属性的可见主窗口(即没有父窗口)关闭时,将发出QApplication :: lastWindowClosed()信号。
默认情况下,将为所有窗口小部件设置此属性,瞬态窗口(例如初始屏幕,工具窗口和弹出菜单)除外。
void QWidget::hide()
隐藏小部件。此函数等效于setVisible(false)。
注意:如果使用的是QDialog或其子类,并且在此函数之后调用show()函数,则对话框将以其原始位置显示。
另请参见hideEvent(),isHidden(),show(),setVisible(),isVisible()和close()。
void QWidget::lower()
将小部件降低到父小部件堆栈的底部。在此调用之后,小部件将在视觉上位于任何重叠的同级小部件之后(并因此而被其遮盖)。
另请参见raise()和stackUnder()。
void QWidget::raise()
将此小部件提升到父小部件堆栈的顶部。
在此调用之后,该小部件将在视觉上位于任何重叠的同级小部件之前。
注意:使用activateWindow()时,可以调用此函数以确保窗口堆叠在顶部。
另请参见lower()和stackUnder()。
void QWidget::repaint()
除非立即禁用更新或隐藏小部件,否则立即通过调用paintEvent()直接重绘小部件。我们建议仅在需要立即重绘(例如在动画期间)时才使用repaint()。
在几乎所有情况下,update()都更好,因为它允许Qt优化速度并最小化闪烁。
警告:如果您在本身可以从paintEvent()调用的函数中调用repaint(),则可能会得到无限递归。 update()函数永远不会导致递归。
另请参见update(),paintEvent()和setUpdatesEnabled()。
void QWidget::setDisabled(bool disable)
如果disable为true,则禁用小部件输入事件;否则启用输入事件。有关更多信息,请参见已启用的文档。
另请参见isEnabledTo(),QKeyEvent,QMouseEvent和changeEvent()。
enabled : bool
此属性保存是否启用了窗口小部件。
通常,已启用的窗口小部件处理键盘和鼠标事件。禁用的小部件则不会。 QAbstractButton例外。某些小部件在禁用时会以不同的方式显示。
例如,按钮可能会将其标签绘制为灰色。如果您的小部件需要知道何时启用或禁用它,则可以将changeEvent()与QEvent :: EnabledChange类型一起使用。禁用小部件会隐式禁用其所有子项。分别启用所有子控件,除非已明确禁用它们。
当其父窗口小部件保持禁用状态时,不可能显式启用不是窗口的子窗口小部件。默认情况下,此属性为true。
访问函数:
bool isEnabled() const
void setEnabled(bool)
另请参见isEnabledTo(),QKeyEvent,QMouseEvent和changeEvent()。
void QWidget::setFocus()
这是一个重载函数。
如果此窗口小部件或其父项之一是活动窗口,则将键盘输入焦点赋予该窗口小部件(或其焦点代理)。
void QWidget::setHidden(bool hidden)
便利功能,等效于setVisible(!hidden)。
另请参见isHidden()。
styleSheet : QString
此属性包含窗口小部件的样式表。
样式表包含对窗口小部件样式的自定义的文本描述,如Qt样式表文档中所述。
从Qt 4.5开始,Qt样式表完全支持macOS。
警告:自定义QStyle子类当前不支持Qt样式表。我们计划在将来的版本中解决此问题。
此属性在Qt 4.2中引入。
访问功能:
QString styleSheet() const
void setStyleSheet(const QString &styleSheet)
另请参见 setStyle(), QApplication::styleSheet, 和Qt Style Sheets.
visible : bool
此属性保存窗口小部件是否可见,如果直到窗口的所有父窗口小部件都可见,则调用setVisible(true)或show()会将窗口小部件设置为可见状态。
如果祖先不可见,则在显示其所有祖先之前,该窗口小部件将不可见。
如果其大小或位置已更改,则Qt保证窗口小部件会在显示之前立即移动并调整大小。
如果尚未调整窗口小部件的大小,Qt将使用adjustSize()将窗口小部件的大小调整为有用的默认值。
调用setVisible(false)或hide()会显式隐藏小部件。除非您显示它,否则即使它的所有祖先都可见,显式隐藏的窗口小部件也将永远不可见。当控件的可见性状态更改时,它会接收显示和隐藏事件。
在隐藏事件和显示事件之间,无需浪费CPU周期来准备或向用户显示信息。例如,视频应用程序可能只是停止生成新帧。屏幕上其他窗口遮挡的窗口小部件被视为可见。图标化的窗口和存在于另一个虚拟桌面(在支持此概念的平台上)上的窗口也是如此。
当窗口系统更改其映射状态(例如,窗口小部件)时,窗口小部件会自发地显示和隐藏事件。用户最小化窗口时发生自发的隐藏事件,再次恢复窗口时发生自发的显示事件。您几乎不需要重新实现setVisible()函数。
如果需要在显示小部件之前更改某些设置,请改用showEvent()。
如果您需要进行一些延迟的初始化,请使用传递给event()函数的波兰事件。
访问功能:
bool isVisible() const
virtual void setVisible(bool visible)
另请参见 show(), hide(), isHidden(), isVisibleTo(), isMinimized(), showEvent(), 和hideEvent().
windowModified : bool
此属性保存窗口中显示的文档是否有未保存的更改。修改后的窗口是内容已更改但尚未保存到磁盘的窗口。
该标志将因平台而异。在macOS上,关闭按钮的外观会有所修改;在其他平台上,窗口标题将带有“ ”(星号)。
窗口标题必须包含“ []”占位符,该占位符指示应在何处显示“ ”。通常,它应该出现在文件名之后(例如,“ document1.txt []-文本编辑器”)。
如果未修改窗口,则仅删除占位符。
请注意,如果将小部件设置为已修改,则其所有祖先也将被设置为已修改。
但是,如果在窗口小部件上调用setWindowModified(false),它将不会传播到其父级,因为可能已修改了该父级的其他子级。
访问函数:
bool isWindowModified() const
void setWindowModified(bool)
另请参见 windowTitle, Application Example, SDI Example, 和MDI Example.
windowTitle : QString
此属性保存窗口标题(标题)。
此属性仅对顶级窗口小部件(如窗口和对话框)有意义。
如果未设置标题,则标题基于windowFilePath。
如果都没有设置,则标题为空字符串。
如果使用windowModified机制,则窗口标题必须包含“ []”占位符,该占位符指示应在何处显示“ *”。通常,它应该出现在文件名之后(例如,“ document1.txt []-文本编辑器”)。
如果windowModified属性为false(默认值),则仅删除占位符。在某些桌面平台(包括Windows和Unix)上,应用程序名称(来自QGuiApplication :: applicationDisplayName)添加在窗口标题的末尾(如果已设置)。
这是由QPA插件完成的,因此会显示给用户,但不属于windowTitle字符串。
访问功能:
QString windowTitle() const
void setWindowTitle(const QString &)
通知者信号:
void windowTitleChanged(const QString &title)
另请参见 windowIcon, windowModified, 和windowFilePath.
void QWidget::show()
显示窗口小部件及其子窗口小部件。这等效于调用showFullScreen(),showMaximized()或setVisible(true),具体取决于平台对窗口标志的默认行为。
另请参见raise(),showEvent(),hide(),setVisible(),showMinimized(),showMaximized(),showNormal(),isVisible()和windowFlags()。
void QWidget::showFullScreen()
以全屏模式显示小部件。
调用此功能仅影响Windows。要从全屏模式返回,请调用showNormal()。
全屏模式在Windows下可以正常工作,但在X下可以解决某些问题。这些问题是由于ICCCM协议的限制所致,该协议指定了X11客户端与窗口管理器之间的通信。 ICCCM根本不了解非装饰全屏窗口的概念。因此,我们能做的最好的事情就是请求一个无边界的窗口,并放置它并调整其大小以填满整个屏幕。
根据窗口管理器的不同,此方法可能有效也可能无效。使用MOTIF提示请求无边界窗口,几乎所有现代窗口管理器都至少部分支持该提示。另一种选择是完全绕开窗口管理器,并使用Qt :: X11BypassWindowManagerHint标志创建一个窗口。
但是,这还有其他严重的问题,例如键盘焦点完全损坏以及对桌面更改或用户抬起其他窗口时产生非常奇怪的影响。遵循最新的ICCCM后规范的X11窗口管理器正确支持全屏模式。
另请参见showNormal(),showMaximized(),show(),hide()和isVisible()。
void QWidget::showMaximized()
显示最大化的小部件。调用此功能仅影响Windows。在X11上,某些窗口管理器可能无法正常使用此功能。
有关说明请参见“窗口几何”文档。
另请参见setWindowState(),showNormal(),showMinimized(),show(),hide()和isVisible()。
void QWidget::showMinimized()
将最小化的小部件显示为图标。调用此功能仅影响Windows。
另请参见showNormal(),showMaximized(),show(),hide(),isVisible()和isMinimized()。
void QWidget::showNormal()
在最大化或最小化窗口小部件后将其还原。
调用此功能仅影响Windows。
另请参见setWindowState(),showMinimized(),showMaximized(),show(),hide()和isVisible()。
void QWidget::update()
除非禁用更新或隐藏小部件,否则更新小部件。
此功能不会导致立即重画;相反,当Qt返回到主事件循环时,它将安排一个绘画事件进行处理。与对repaint()的调用相比,这允许Qt优化以提高速度和减少闪烁。多次调用update()通常只会导致一次paintEvent()调用。
Qt通常在paintEvent()调用之前擦除小部件的区域。
如果设置了Qt :: WA_OpaquePaintEvent小部件属性,则该小部件负责用不透明的颜色绘制其所有像素。
另请参见repaint(),paintEvent(),setUpdatesEnabled()和Analog Clock Example。
Static Public Members
QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
创建一个QWidget,可以将窗口嵌入到基于QWidget的应用程序中。窗口容器被创建为父级的子级,并带有窗口标志标志。一旦将窗口嵌入到容器中,容器将控制窗口的几何形状和可见性。
不建议在嵌入式窗口上显式调用QWindow :: setGeometry(),QWindow :: show()或QWindow :: hide()。容器接管了窗口的所有权。可以通过调用QWindow :: setParent()从窗口容器中删除该窗口。窗口容器作为本机子窗口附加到其子级的顶层窗口。
当窗口容器用作QAbstractScrollArea或QMdiArea的子级时,它将为其父链中的每个小部件创建一个本机窗口,以便在此用例中进行适当的堆叠和剪切。为窗口容器创建本机窗口还可以进行正确的堆栈和剪切。必须在显示窗口容器之前完成此操作。具有许多本机子窗口的应用程序可能会遇到性能问题。
窗口容器有许多已知的限制:
堆叠顺序;嵌入式窗口将作为不透明框堆叠在小部件层次结构的顶部。多个重叠的窗口容器实例的堆叠顺序是不确定的。
渲染集成;窗口容器不能与QGraphicsProxyWidget,QWidget :: render()或类似功能互操作。
焦点处理;可以让窗口容器实例具有任何焦点策略,并且它将通过调用QWindow :: requestActivate()将焦点委托给窗口。
但是,从QWindow实例返回正常的焦点链将取决于QWindow实例实现本身。
例如,当进入具有标签页焦点的基于Qt Quick的窗口时,很有可能进一步的标签页按下只会在QML应用程序内部循环。同样,QWindow :: requestActivate()是否真正赋予窗口焦点取决于平台。
在基于QWidget的应用程序中使用许多窗口容器实例可能会严重损害应用程序的整体性能。
QWidget *QWidget::find(WId id)
返回带有窗口标识符/句柄ID的小部件的指针。
窗口标识符的类型取决于基础窗口系统,有关实际定义。
请参见qwindowdefs.h。如果没有带有此标识符的窗口小部件,则返回nullptr。
QWidget *QWidget::keyboardGrabber()
返回当前正在获取键盘输入的小部件。
如果此应用程序中当前没有小部件在抓住键盘,则返回nullptr。
另请参见grabMouse()和mouseGrabber()。
QWidget *QWidget::mouseGrabber()
返回当前正在捕获鼠标输入的小部件。
如果此应用程序中当前没有任何小部件在抓住鼠标,则返回nullptr。
另请参见grabMouse()和keyboardGrabber()。
void QWidget::setTabOrder(QWidget *first, QWidget *second)
在焦点顺序中将第二个小部件放在第一个小部件之后。它有效地从其焦点链中删除了第二个小部件,并将其插入第一个小部件之后。
请注意,由于第二个窗口小部件的制表符顺序已更改,因此您应按以下顺序排序链:
不是下面这样:
如果第一个或第二个具有焦点代理,则setTabOrder()可以正确替代代理。
注意:从Qt 5.10开始:具有子级作为焦点代理的窗口小部件被理解为复合窗口小部件。在一个或两个复合小部件之间设置标签顺序时,将保留每个内部小部件中的本地标签顺序。这意味着,如果两个窗口小部件都是复合窗口小部件,则产生的选项卡顺序将是从第一个内部的最后一个子项到第二个内部的第一个子项。
另请参见小部件中的setFocusPolicy(),setFocusProxy()和“键盘焦点”。
Protected Functions
void QWidget::actionEvent(QActionEvent *event)
每当更改窗口小部件的动作时,都会使用给定事件调用此事件处理程序。
另请参见addAction(),insertAction(),removeAction(),actions()和QActionEvent。
void QWidget::changeEvent(QEvent *event)
可以重新实现此事件处理程序以处理状态更改。可以通过提供的事件来检索在此事件中更改的状态。
更改事件包括:QEvent :: ToolBarChange,QEvent :: ActivationChange,QEvent :: EnabledChange,QEvent :: FontChange,QEvent :: StyleChange,QEvent :: PaletteChange,QEvent :: WindowTitleChange,QEvent :: IconTextChange,QEvent :: ModifiedChange,QEvent :: MouseTrackingChange,QEvent :: ParentChange,QEvent :: WindowStateChange,QEvent :: LanguageChange,QEvent :: LocaleChange,QEvent :: LayoutDirectionChange,QEvent :: ReadOnlyChange。
void QWidget::closeEvent(QCloseEvent *event)
当Qt从窗口系统收到对顶级窗口小部件的窗口关闭请求时,将使用给定事件调用此事件处理程序。
默认情况下,事件被接受并且小部件关闭。您可以重新实现此功能,以更改小部件响应窗口关闭请求的方式。例如,可以通过在所有事件上调用ignore()来防止窗口关闭。主窗口应用程序通常使用此功能的重新实现来检查用户的工作是否已保存并在关闭前请求许可。
例如,应用程序示例使用帮助器函数来确定是否关闭窗口:
详情参见 event(), hide(), close(), QCloseEvent, 和Application Example.
void QWidget::contextMenuEvent(QContextMenuEvent *event)
对于事件事件,可以在子类中重新实现此事件处理程序,以接收小部件上下文菜单事件。
当小部件的contextMenuPolicy为Qt :: DefaultContextMenu时,将调用处理程序。默认实现忽略上下文事件。有关更多详细信息,
请参见QContextMenuEvent文档。
另请参见event(),QContextMenuEvent和customContextMenuRequested()。
void QWidget::create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true)
创建一个新的窗口小部件窗口。
Qt 5中会忽略参数window,initializeWindow和destroyOldWindow。
请使用QWindow :: fromWinId()创建一个包装外部窗口的QWindow,并将其传递给QWidget :: createWindowContainer()。
另请参见createWindowContainer()和QWindow :: fromWinId()。
void QWidget::destroy(bool destroyWindow = true, bool destroySubWindows = true)
释放窗口系统资源。
如果destroyWindow为true,则销毁窗口小部件窗口。 destroy()递归地为所有子小部件调用自身,将destroySubWindows传递给destroyWindow参数。要更好地控制子小部件的销毁,请先选择性地销毁子小部件。
通常从QWidget析构函数调用此函数。
void QWidget::dragEnterEvent(QDragEnterEvent *event)
当拖动正在进行并且鼠标进入该小部件时,将调用此事件处理程序。
该事件在event参数中传递。如果事件被忽略,则小部件将不会收到任何拖动事件。
有关如何在应用程序中进行拖放的概述,请参见拖放文档。
另请参见QDrag和QDragEnterEvent。
void QWidget::dragLeaveEvent(QDragLeaveEvent *event)
当拖动正在进行并且鼠标离开该小部件时,将调用此事件处理程序。
该事件在event参数中传递。有关如何在应用程序中进行拖放的概述,请参见拖放文档。
另请参见QDrag和QDragLeaveEvent。
void QWidget::dragMoveEvent(QDragMoveEvent *event)
如果拖动正在进行中,并且发生以下任何一种情况,则将调用此事件处理程序:光标进入此窗口小部件,光标在该窗口小部件内移动,或在此窗口小部件获得焦点时按下键盘上的修改键。
该事件在event参数中传递。有关如何在应用程序中进行拖放的概述,请参见拖放文档。
另请参见QDrag和QDragMoveEvent。
void QWidget::dropEvent(QDropEvent *event)
当拖动拖放到此小部件上时,将调用此事件处理程序。
该事件在event参数中传递。有关如何在应用程序中进行拖放的概述,请参见拖放文档。
另请参见QDrag和QDropEvent。
void QWidget::enterEvent(QEvent *event)
可以在子类中重新实现此事件处理程序,以接收在event参数中传递的小部件输入事件。
当鼠标光标进入窗口小部件时,事件将发送到窗口小部件。
另请参见leaveEvent(),mouseMoveEvent()和event()。
void QWidget::focusInEvent(QFocusEvent *event)
可以在子类中重新实现此事件处理程序,以接收小部件的键盘焦点事件(接收到焦点)。
该事件在event参数中传递。窗口小部件通常必须将FocusPolicy()设置为Qt :: NoFocus以外的其他值,以接收焦点事件。
(请注意,应用程序程序员可以在任何窗口小部件上调用setFocus(),即使那些通常不接受焦点的窗口小部件也是如此。)默认实现会更新窗口小部件(未指定focusPolicy()的窗口除外)。
另请参见focusOutEvent(),setFocusPolicy(),keyPressEvent(),keyReleaseEvent(),event()和QFocusEvent。
bool QWidget::focusNextChild()
查找一个新的小部件,以使键盘焦点适合Tab,并在找到新的小部件时返回true;否则,返回false。
另请参见focusPreviousChild()。
bool QWidget::focusNextPrevChild(bool next)
根据Tab和Shift + Tab键,找到一个使键盘焦点对准的新小部件,如果可以找到新的小部件,则返回true;否则,返回false。
如果next为true,则此函数向前搜索;如果next为false,则向后搜索。有时,您将需要重新实现此功能。
例如,Web浏览器可能会重新实现它以使其“当前活动链接”向前或向后移动,并仅在到达“页面”上的最后一个或第一个链接时才调用focusNextPrevChild()。
子窗口小部件在其父窗口小部件上调用focusNextPrevChild(),但是只有包含子窗口小部件的窗口才决定将焦点重定向到何处。
通过为对象重新实现此功能,可以控制所有子小部件的焦点遍历。
另请参见focusNextChild()和focusPreviousChild()。
void QWidget::focusOutEvent(QFocusEvent *event)
可以在子类中重新实现此事件处理程序,以接收小部件的键盘焦点事件(焦点丢失)。
事件在event参数中传递。
小部件通常必须将FocusPolicy()设置为Qt :: NoFocus以外的其他值,才能接收焦点事件。
(请注意,应用程序程序员可以在任何窗口小部件上调用setFocus(),即使那些通常不接受焦点的窗口小部件也是如此。)默认实现会更新窗口小部件(未指定focusPolicy()的窗口除外)。
另请参见focusInEvent(),setFocusPolicy(),keyPressEvent(),keyReleaseEvent(),event()和QFocusEvent。
bool QWidget::focusPreviousChild()
根据Shift + Tab键,找到一个使键盘焦点对准的新小部件,如果可以找到新的小部件,则返回true;否则,返回false。
另请参见focusNextChild()。
void QWidget::hideEvent(QHideEvent *event)
可以在子类中重新实现此事件处理程序,以接收小部件隐藏事件。
该事件在event参数中传递。隐藏事件在隐藏后会立即发送到小部件。
注意:当窗口系统更改其映射状态时,例如窗口小部件,窗口小部件会收到自发的显示和隐藏事件。
用户最小化窗口时发生自发的隐藏事件,再次恢复窗口时发生自发的显示事件。收到自发的hide事件后,从isVisible()的角度来看,仍将小部件视为可见。
另请参见visible,event()和QHideEvent。
void QWidget::inputMethodEvent(QInputMethodEvent *event)
可以在子类中重新实现用于event事件的处理程序,以接收输入法合成事件。输入方法的状态更改时,将调用此处理程序。
请注意,在创建自定义文本编辑窗口小部件时,必须显式设置Qt :: WA_InputMethodEnabled窗口属性(使用setAttribute()函数),以便接收输入法事件。
默认实现调用event-> ignore(),它拒绝Input Method事件。
有关更多详细信息,请参见QInputMethodEvent文档。
另请参见event()和QInputMethodEvent。
void QWidget::keyPressEvent(QKeyEvent *event)
可以在子类中重新实现event时间的处理程序,以接收小部件的按键事件。小部件必须调用setFocusPolicy()才能最初接受焦点并具有焦点,以便接收按键事件。
如果重新实现此处理程序,那么如果不对键进行操作,则调用基类实现非常重要。
如果用户按下QKeySequence :: Cancel的键序列(通常是Escape键),则默认实现将关闭弹出窗口小部件。否则,事件将被忽略,以便小部件的父级可以解释它。
请注意,QKeyEvent以isAccepted()== true开头,因此您无需调用QKeyEvent :: accept()-如果对键进行操作,则无需调用基类实现。
另请参见keyReleaseEvent(),setFocusPolicy(),focusInEvent(),focusOutEvent(),event(),QKeyEvent和Tetrix示例。
void QWidget::keyReleaseEvent(QKeyEvent *event)
可以在子类中重新实现该事件处理程序(用于事件事件),以接收小部件的关键释放事件。小部件必须首先接受焦点并具有焦点才能接收按键释放事件。
如果重新实现此处理程序,那么如果不对键进行操作,则调用基类实现非常重要。默认实现会忽略该事件,以便小部件的父级可以解释该事件。
请注意,QKeyEvent以isAccepted()== true开头,因此您无需调用QKeyEvent :: accept()-如果对键进行操作,则无需调用基类实现。
另请参见keyPressEvent(),QEvent :: ignore(),setFocusPolicy(),focusInEvent(),focusOutEvent(),event()和QKeyEvent。
void QWidget::leaveEvent(QEvent *event)
可以在子类中重新实现此事件处理程序,以接收在event参数中传递的小部件离开事件。当鼠标光标离开小部件时,将离开事件发送到该小部件。
另请参见enterEvent(),mouseMoveEvent()和event()。
void QWidget::mouseDoubleClickEvent(QMouseEvent *event)
可以在子类中重新实现该事件处理程序(用于事件事件),以接收小部件的鼠标双击事件。默认实现调用mousePressEvent()。
注意:除双击事件外,小部件还将接收鼠标按下和鼠标释放事件。并且,如果另一个与该小部件重叠的小部件因响应按下或释放事件而消失,则该小部件将仅收到双击事件。
开发人员有责任确保应用程序正确解释这些事件。
另请参见mousePressEvent(),mouseReleaseEvent(),mouseMoveEvent(),event()和QMouseEvent。
void QWidget::mouseMoveEvent(QMouseEvent *event)
可以在子类中重新实现此事件处理程序(用于事件事件),以接收小部件的鼠标移动事件。
如果关闭了鼠标跟踪,则仅当在移动鼠标时按下鼠标按钮时,才会发生鼠标移动事件。如果打开了鼠标跟踪,即使没有按下鼠标按钮,也会发生鼠标移动事件。 QMouseEvent :: pos()报告鼠标光标相对于此小部件的位置。对于按下和释放事件,其位置通常与上次鼠标移动事件的位置相同,但是如果用户握手则可能会有所不同。这是基础窗口系统的功能,而不是Qt。如果要在鼠标移动时立即显示工具提示(例如,使用QMouseEvent :: pos()获取鼠标坐标并将其显示为工具提示),则必须首先如上所述启用鼠标跟踪。然后,为确保立即更新工具提示,必须在实现mouseMoveEvent()时调用QToolTip :: showText()而不是setToolTip()。
另请参见setMouseTracking(),mousePressEvent(),mouseReleaseEvent(),mouseDoubleClickEvent(),event(),QMouseEvent和Scribble示例。
void QWidget::mousePressEvent(QMouseEvent *event)
可以在子类中重新实现event时间的处理程序,以接收小部件的鼠标按下事件。
如果您在mousePressEvent()中创建新的小部件,则mouseReleaseEvent()可能不会到达您期望的位置,这取决于基础窗口系统(或X11窗口管理器),小部件的位置,甚至更多。
当您在窗口外部单击时,默认实现会关闭弹出窗口小部件。对于其他窗口小部件类型,它不执行任何操作。
另请参见mouseReleaseEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),event(),QMouseEvent和Scribble示例。
void QWidget::mouseReleaseEvent(QMouseEvent *event)
可以在子类中重新实现此事件处理程序(用于事件事件),以接收小部件的鼠标释放事件。
另请参见mousePressEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),event(),QMouseEvent和Scribble示例。
void QWidget::move(int x, int y)
这是一个重载函数。这对应于move(QPoint(x,y))。注意:属性pos的setter函数。
bool QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
可以在子类中重新实现此特殊事件处理程序,以接收由eventType标识的本机平台事件,这些事件在message参数中传递。
在重新实现此功能时,如果要停止由Qt处理的事件,请返回true并设置结果。结果参数仅在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 *
详情参见 QAbstractNativeEventFilter.
void QWidget::paintEvent(QPaintEvent *event)
可以在子类中重新实现此事件处理程序,以接收事件中传递的绘画事件。
绘制事件是重新绘制小部件的全部或一部分的请求。可能由于以下原因之一而发生这种情况:调用repaint()或update(),该窗口小部件被遮盖且现在已被发现,或许多其他原因。
许多窗口小部件可以在需要时仅重绘整个表面,但是一些慢速窗口小部件需要通过仅绘制请求的区域来优化:QPaintEvent :: region()。此速度优化不会更改结果,因为在事件处理期间将绘画裁剪到该区域。
例如,QListView和QTableView就是这样做的。
Qt还尝试通过将多个绘画事件合并为一个来加快绘画速度。当多次调用update()或窗口系统发送多个绘制事件时,Qt会将这些事件合并为一个具有较大区域的事件(请参见QRegion :: united())。 repaint()函数不允许这种优化,因此我们建议尽可能使用update()。
发生绘画事件时,通常会擦除更新区域,因此您正在小部件的背景上绘画。可以使用setBackgroundRole()和setPalette()设置背景。
从Qt 4.0开始,QWidget自动对其绘画进行双缓冲,因此无需在paintEvent()中编写双缓冲代码来避免闪烁。
注意:通常,应避免在paintEvent()内部调用update()或repaint()。例如,在paintEvent()内的子级上调用update()或repaint()会导致未定义的行为。孩子可能会也可能不会参加绘画活动。
警告:如果您使用的是没有Qt后备存储的自定义绘画引擎,则必须设置Qt :: WA_PaintOnScreen。否则,QWidget :: paintEngine()将永远不会被调用;将使用后备存储。
另请参见event(),repaint(),update(),QPainter,QPixmap,QPaintEvent和Analog Clock Example。
void QWidget::resizeEvent(QResizeEvent *event)
可以在子类中重新实现此事件处理程序,以接收在event参数中传递的窗口小部件调整大小事件。
调用resizeEvent()时,小部件已经具有新的几何形状。可以通过QResizeEvent :: oldSize()访问旧大小。
在处理调整大小事件后,该窗口小部件将被擦除并立即收到一个绘制事件。在此处理程序内无需(或不应)进行绘制。
另请参见moveEvent(),event(),resize(),QResizeEvent,paintEvent()和Scribble示例。
void QWidget::showEvent(QShowEvent *event)
可以在子类中重新实现此事件处理程序,以接收在event参数中传递的窗口小部件显示事件。
非自发的显示事件会在显示之前立即发送到窗口小部件。窗口的自发显示事件随后被传送。
注意:当窗口系统更改其映射状态时,例如窗口小部件,窗口小部件会收到自发的显示和隐藏事件。用户最小化窗口时发生自发的隐藏事件,再次恢复窗口时发生自发的显示事件。
收到自发的hide事件后,从isVisible()的角度来看,仍将小部件视为可见。
另请参见visible,event()和QShowEvent。
void QWidget::tabletEvent(QTabletEvent *event)
可以在子类中重新实现该事件处理程序(用于事件事件),以接收小部件的平板电脑事件。
如果重新实现此处理程序,则不处理该事件就必须忽略()事件,以便小部件的父级可以解释该事件,这一点非常重要。
默认实现忽略该事件。如果关闭了数位板跟踪功能,则仅当手写笔与数位板接触或在移动手写笔时按下至少一个手写笔按钮时,才会发生数位板移动事件。
如果打开了数位板跟踪功能,则即使手写笔在数位板附近徘徊而没有按下按钮,也将发生数位板移动事件。
另请参见QEvent :: ignore(),QEvent :: accept(),event(),setTabletTracking()和QTabletEvent。
void QWidget::wheelEvent(QWheelEvent *event)
可以在子类中重新实现此事件处理程序(用于事件事件),以接收小部件的转轮事件。
如果重新实现此处理程序,则不处理该事件就必须忽略()事件,以便小部件的父级可以解释该事件,这一点非常重要。默认实现忽略该事件。
另请参见QEvent :: ignore(),QEvent :: accept(),event()和QWheelEvent。
Macros
QWIDGETSIZE_MAX
Public Functions
QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
构造一个小部件,它是父级的子级,并将小部件标志设置为f。
如果parent为nullptr,则新窗口小部件将成为一个窗口。如果parent是另一个小部件,则此小部件将成为parent内部的子窗口。
删除其父项时,将删除新的窗口小部件。小部件标志参数f通常为0,但可以将其设置为自定义窗口的框架(即parent必须为nullptr)。要自定义框架,请使用由任何窗口标志的按位或组成的值。
如果将子窗口小部件添加到已经可见的窗口小部件,则必须显式显示子窗口以使其可见。
请注意,Qt的X11版本可能无法在所有系统上提供样式标志的所有组合。这是因为在X11上,Qt只能询问窗口管理器,并且窗口管理器可以覆盖应用程序的设置。在Windows上,Qt可以设置所需的任何标志。
另请参见windowFlags。
QWidget::~QWidget()
销毁小部件。所有此小部件的子级都将首先删除。
如果此窗口小部件是主窗口小部件,则应用程序退出。
acceptDrops : bool
此属性保存是否为此窗口小部件启用了放置事件。将此属性设置为true会向系统宣布此窗口小部件可能能够接受放置事件。
如果窗口小部件是桌面(windowType()== Qt :: Desktop),则在另一个应用程序正在使用桌面的情况下,此操作可能会失败。您可以调用acceptDrops()来测试是否发生这种情况。
警告:请勿在拖放事件处理程序中修改此属性。默认情况下,此属性为false。
访问函数:
bool acceptDrops() const
void setAcceptDrops(bool on)
另请参见Drag 和 Drop.。
accessibleDescription : QString
此属性保存辅助技术所看到的小部件的描述。小部件的可访问描述应传达小部件的功能。
尽管accessibleName应该是简短的字符串(例如,保存),但说明应提供更多上下文,例如保存当前文档。
此属性必须本地化。默认情况下,此属性包含一个空字符串,并且Qt退回到使用工具提示来提供此信息。
访问函数:
QString accessibleDescription() const
void setAccessibleDescription(const QString &description)
另请参见QWidget :: accessibleName和QAccessibleInterface :: text()。
accessibleName : QString
此属性保存辅助技术看到的窗口小部件的名称。这是诸如屏幕阅读器之类的辅助技术宣布此窗口小部件的主要名称。
对于大多数窗口小部件,不需要设置此属性。
例如,对于QPushButton,将使用按钮的文本。当窗口小部件不提供任何文本时,设置此属性很重要。
例如,仅包含图标的按钮需要设置此属性才能与屏幕阅读器一起使用。该名称应简短,并且与小部件传达的视觉信息等效。
此属性必须本地化。
默认情况下,此属性包含一个空字符串。
访问函数:
QString accessibleName() const
void setAccessibleName(const QString &name)
另请参见QWidget :: accessibleDescription和QAccessibleInterface :: text()。
QList QWidget::actions() const
返回此小部件操作的列表(可能为空)。
另请参见contextMenuPolicy,insertAction()和removeAction()。
void QWidget::activateWindow()
将包含此窗口小部件的顶级窗口小部件设置为活动窗口。活动窗口是具有键盘输入焦点的可见顶级窗口。该功能执行与在顶级窗口的标题栏上单击鼠标相同的操作。
在X11上,结果取决于Window Manager。如果要确保窗口也堆叠在顶部,则还应该调用raise()。
请注意,该窗口必须可见,否则activateWindow()无效。
在Windows上,如果您在应用程序当前不是活动的应用程序时调用它,则它将不会使其成为活动的窗口。
它将更改任务栏条目的颜色,以指示窗口已经过某种更改。这是因为Microsoft不允许应用程序中断用户在另一个应用程序中当前正在执行的操作。
另请参见isActiveWindow(),window(),show()和QWindowsWindowFunctions :: setWindowActivationBehavior()。
void QWidget::addAction(QAction *action)
将操作操作追加到此小部件的操作列表中。所有QWidget都有一个QAction列表,但是可以用许多不同的方式以图形方式表示它们。
QAction列表(由actions()返回)的默认用法是创建上下文QMenu。一个QWidget只能有一个动作,添加一个已经存在的动作不会导致相同的动作在小部件中出现两次。操作的所有权不会转移到此QWidget。】
另请参见removeAction(),insertAction(),actions()和QMenu。
void QWidget::addActions(QList actions)
将操作操作追加到此小部件的操作列表中。
另请参见removeAction(),QMenu和addAction()。
void QWidget::adjustSize()
调整小部件的大小以适合其内容。
如果有效,则此函数使用sizeHint(),即,大小提示的宽度和高度> =0。否则,它将大小设置为覆盖所有子小部件的子矩形(所有子小部件矩形的并集)。对于Windows,还应考虑屏幕尺寸。
如果sizeHint()小于(200,100)并且大小策略正在扩展,则窗口将至少为(200,100)。窗口的最大大小是屏幕宽度和高度的2/3。
另请参见sizeHint()和childrenRect()。
autoFillBackground : bool
此属性保存是否自动填充窗口小部件背景如果启用,此属性将导致Qt在调用paint事件之前填充窗口小部件的背景。
使用的颜色由小部件调色板中的QPalette :: Window颜色角色定义。此外,除非设置了WA_OpaquePaintEvent或WA_NoSystemBackground属性,否则Windows始终会用QPalette :: Window填充。
如果小部件的父级对其背景具有静态渐变,则无法关闭此属性(即,将其设置为false)。
警告:请谨慎使用此属性和Qt样式表。当窗口小部件的样式表具有有效的背景或边框图像时,将自动禁用此属性。默认情况下,此属性为false。此属性在Qt 4.1中引入。
访问函数:
bool autoFillBackground() const
void setAutoFillBackground(bool enabled)
另请参见 Qt::WA_OpaquePaintEvent, Qt::WA_NoSystemBackground, and Transparency and Double Buffering.
QPalette::ColorRole QWidget::backgroundRole() const
返回窗口小部件的背景角色。
背景角色从小部件的调色板中定义用于渲染背景的画笔。
如果未设置任何显式后台角色,则该小部件继承其父小部件的背景角色。
另请参见setBackgroundRole()和foregroundRole()。
QBackingStore *QWidget::backingStore() const
返回此小部件将被绘制到的QBackingStore。此功能在Qt 5.0中引入。
baseSize : QSize
此属性保存小部件的基本大小。
如果小部件定义sizeIncrement(),则基本大小用于计算适当的小部件大小。默认情况下,对于新创建的小部件,此属性包含一个宽度和高度为零的大小。
访问函数:
QSize baseSize() const
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)
另请参见setSizeIncrement()。
QWidget *QWidget::childAt(int x, int y) const
返回小部件坐标系中(x,y)位置的可见子小部件。如果在指定位置没有可见的子窗口小部件,则该函数返回nullptr。
QWidget *QWidget::childAt(const QPoint &p) const
这是一个重载函数。返回窗口小部件自身坐标系中p点处的可见子窗口小部件。
childrenRect : const QRect
此属性保存窗口小部件的子项的边界矩形。不包括隐藏的子项。
默认情况下,对于没有子代的小部件,此属性包含一个位于原点的宽度和高度为零的矩形。
访问函数:
QRect childrenRect() const
另请参见childrenRegion()和geometry()。
childrenRegion : const QRegion
此属性保存由小部件的子项占据的合并区域。
不包括隐藏子项。
默认情况下,对于没有子代的窗口小部件,此属性包含一个空白区域。
访问函数:
QRegion childrenRegion() const
另请参见childrenRect(),geometry()和mask()。
void QWidget::clearFocus()
从小部件获取键盘输入焦点。
如果窗口小部件具有活动焦点,则会向该窗口小部件发送聚焦事件,以告知它已失去焦点。
此小部件必须启用焦点设置才能获取键盘输入焦点,即它必须调用setFocusPolicy()。
另请参见hasFocus(),setFocus(),focusInEvent(),focusOutEvent(),setFocusPolicy()和QApplication :: focusWidget()。
void QWidget::clearMask()
删除由setMask()设置的任何蒙版。
另请参见setMask()。
QMargins QWidget::contentsMargins() const
contentMargins函数返回小部件的内容边距。
此功能在Qt 4.6中引入。
另请参见setContentsMargins()和contentsRect()。
QRect QWidget::contentsRect() const
返回窗口小部件内的区域。
另请参见setContentsMargins()和contentsMargins()。
contextMenuPolicy : Qt::ContextMenuPolicy
窗口小部件如何显示上下文菜单。此属性的默认值为Qt :: DefaultContextMenu,这意味着将调用contextMenuEvent()处理函数。其他值是Qt :: NoContextMenu,Qt :: PreventContextMenu,Qt :: ActionsContextMenu和Qt :: CustomContextMenu。使用Qt :: CustomContextMenu,将发出信号customContextMenuRequested()。
访问函数:
Qt::ContextMenuPolicy contextMenuPolicy() const
void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
另请参见contextMenuEvent(),customContextMenuRequested()和actions()。
cursor : QCursor
此属性保存此小部件的光标形状鼠标光标悬停在此小部件上时将采用此形状。
有关一系列有用形状的信息,请参见预定义光标对象的列表。编辑器小部件可能使用I型光标:
如果未设置游标,或者在调用unsetCursor()之后,将使用父级的游标。默认情况下,此属性包含具有Qt :: ArrowCursor形状的光标。
如果鼠标离开小部件,即使鼠标被抓住,某些基础窗口实现也会重置游标。
如果要为所有窗口小部件设置光标,即使在窗口外,也可以考虑QGuiApplication :: setOverrideCursor()。
访问函数:
QCursor cursor() const
void setCursor(const QCursor &)
void unsetCursor()
另请参见QGuiApplication :: setOverrideCursor()。
WId QWidget::effectiveWinId() const
返回窗口小部件的有效窗口系统标识符,即本机父级的窗口系统标识符。
如果窗口部件是本地窗口部件,则此函数返回本地窗口部件ID。否则,返回第一个本机父窗口小部件的窗口ID,即包含此窗口小部件的顶层窗口小部件。
注意:我们建议您不要存储此值,因为它可能会在运行时更改。
此功能在Qt 4.4中引入。
另请参见nativeParentWidget()。
void QWidget::ensurePolished() const
确保小部件及其子级已被QStyle抛光(即具有正确的字体和调色板)。
QWidget在完全构造之后但在第一次显示之前调用此函数。如果要确保在执行操作之前将小部件打磨,可以调用此函数,例如,在小部件的sizeHint()重新实现中可能需要正确的字体大小。
请注意,此函数是从sizeHint()的默认实现中调用的。对于必须在所有构造函数(来自基类以及子类)被调用之后必须进行的最终初始化,抛光非常有用。如果在抛光小部件时需要更改某些设置,请重新实现event()并处理QEvent :: Polish事件类型。
注意:该函数声明为const,以便可以从其他const函数(例如sizeHint())中调用。
另请参阅event()。
focusPolicy : Qt::FocusPolicy
此属性保留窗口小部件接受键盘焦点的方式。
如果窗口小部件通过制表符接受键盘焦点,则策略为Qt :: TabFocus;
如果窗口小部件通过单击接受焦点,则策略为Qt :: ClickFocus;
如果窗口小部件同时接受焦点,则策略为Qt :: StrongFocus和Qt: :NoFocus(默认),如果它根本不接受焦点。
如果小部件处理键盘事件,则必须为其启用键盘焦点。
通常这是通过小部件的构造函数完成的。例如,QLineEdit构造函数调用setFocusPolicy(Qt :: StrongFocus)。
如果小部件具有焦点代理,则焦点策略将传播给它。
访问函数:
Qt::FocusPolicy focusPolicy() const
void setFocusPolicy(Qt::FocusPolicy policy)
另请参见focusInEvent(),focusOutEvent(),keyPressEvent(),keyReleaseEvent()和enabled。
QWidget *QWidget::focusWidget() const
返回已调用setFocus的此小部件的最后一个子级。\
对于顶级窗口小部件,如果此窗口被激活,则该窗口小部件将获得焦点。
这与QApplication :: focusWidget()不同,后者在当前活动的窗口中返回焦点小部件。
font : QFont
此属性保存当前为小部件设置的字体。
此属性描述小部件的请求字体。
呈现标准组件时,小部件的样式使用该字体,并且该字体可用来确保自定义小部件可以保持与本机平台外观的一致性。通常,不同的平台或不同的样式会为应用程序定义不同的字体。
当您为窗口小部件分配新字体时,该字体的属性将与窗口小部件的默认字体组合在一起以形成窗口小部件的最终字体。您可以调用fontInfo()以获得小部件最终字体的副本。最终字体也用于初始化QPainter的字体。
默认值取决于系统环境。 QApplication维护一种系统/主题字体,它是所有小部件的默认字体。对于某些类型的小部件,可能还会有特殊的字体默认值。您还可以通过将自定义字体和窗口小部件的名称传递给QApplication :: setFont()来为窗口小部件定义默认字体。最后,将字体与Qt的字体数据库进行匹配以找到最佳匹配。
QWidget将显式字体属性从父级传播到子级。如果您更改字体的特定属性并将该字体分配给窗口小部件,则该属性将传播到窗口小部件的所有子级,从而覆盖该属性的所有系统默认值。请注意,默认情况下,除非启用了Qt :: WA_WindowPropagation属性,否则字体不会传播到窗口(请参见isWindow())。 QWidget的字体传播类似于其调色板传播。
当前样式用于呈现所有标准Qt小部件的内容,可以自由选择使用小部件字体,或者在某些情况下可以忽略(部分或完全)它。特别是,某些样式(例如GTK样式,Mac样式和Windows Vista样式)会对小部件字体进行特殊修改,以匹配平台的本机外观。因此,不能保证将属性分配给窗口小部件的字体会更改窗口小部件的外观。相反,您可以选择应用styleSheet。
注意:如果Qt样式表与setFont()在同一小部件上使用,则如果设置冲突,样式表将优先。
访问函数:
const QFont & font() const
void setFont(const QFont &)
另请参见fontInfo()和fontMetrics()。
QFontInfo QWidget::fontInfo() const
返回小部件当前字体的字体信息。
等效于QFontInfo(widget-> font())。
另请参见font(),fontMetrics()和setFont()。
QFontMetrics QWidget::fontMetrics() const
返回小部件当前字体的字体指标。
等效于QFontMetrics(widget-> font())。
另请参见font(),fontInfo()和setFont()。
QPalette::ColorRole QWidget::foregroundRole() const
返回前台角色。前景角色从小部件的调色板定义用于绘制前景的颜色。
如果未设置任何显式的前台角色,则该函数将返回一个与后台角色相反的角色。
另请参见setForegroundRole()和backgroundRole()。
frameGeometry : const QRect
小部件相对于其父级(包括任何窗口框架)的几何形状有关窗口几何问题的概述,请参见“窗口几何”文档。默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:
QRect frameGeometry() const
另请参见geometry(),x(),y()和pos()。
frameSize : const QSize
此属性保存包含任何窗口框架的窗口小部件的大小。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
访问函数:
QSize frameSize() const
geometry : QRect
此属性保存窗口小部件相对于其父窗口的几何形状,但不包括窗口框架。更改几何时,窗口小部件(如果可见)立即接收到移动事件(moveEvent())和/或调整大小事件(resizeEvent())。
如果窗口小部件当前不可见,则可以确保在显示窗口小部件之前先接收适当的事件。
如果大小分量超出由minimumSize()和maximumSize()定义的范围,则将对其进行调整。
警告:在resizeEvent()或moveEvent()中调用setGeometry()可能导致无限递归。有关Windows几何问题的概述,请参见“窗口几何”文档。默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:
const QRect & geometry() const
void setGeometry(int x, int y, int w, int h)
void setGeometry(const QRect &)
另请参见frameGeometry(),rect(),move(),resize(), moveEvent(),resizeEvent(),minimumSize()和maximumSize()。
QPixmap QWidget::grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
将窗口小部件渲染为受给定矩形限制的像素图。如果小部件有任何子代,则它们也将被绘制在适当的位置。如果指定了无效尺寸的矩形(默认值),则会绘制整个窗口小部件。此功能在Qt 5.0中引入。注意:可以通过元对象系统和QML调用此函数。请参阅Q_INVOKABLE。
另请参见render()和QPixmap。
void QWidget::grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())
使用特定标志将小部件订阅给定手势。
此功能在Qt 4.6中引入。
另请参见ungrabGesture()和QGestureEvent。
void QWidget::grabKeyboard()
抓取键盘输入。这个小部件接收所有键盘事件,直到调用releaseKeyboard()为止;其他小部件完全没有键盘事件。
鼠标事件不受影响。如果要抓取,请使用grabMouse()。焦点小部件不受影响,只是它不接收任何键盘事件。 setFocus()照常移动焦点,但是新的焦点小部件仅在调用releaseKeyboard()之后才接收键盘事件。
如果当前有其他窗口小部件正在捕获键盘输入,则首先释放该窗口小部件的捕获。
另请参见releaseKeyboard(),grabMouse(),releaseMouse()和focusWidget()。
void QWidget::grabMouse()
抓住鼠标输入。
这个小部件接收所有鼠标事件,直到调用releaseMouse()为止;其他小部件完全没有鼠标事件。键盘事件不受影响。如果要抓取,请使用grabKeyboard()。
警告:鼠标抓取应用程序中的错误经常会锁定终端。
谨慎使用此功能,并在调试时考虑使用-nograb命令行选项。使用Qt时几乎不需要抓住鼠标,因为Qt会明智地抓住并释放它。特别是,Qt会在按下鼠标按钮时抓住鼠标,并一直保持到释放最后一个按钮为止。
注意:只有可见的窗口小部件才能捕获鼠标输入。如果isVisible()对于某个窗口小部件返回false,则该窗口小部件无法调用grabMouse()。
注意:在Windows上,仅当鼠标位于进程所拥有的窗口内时,grabMouse()才起作用。在macOS上,仅当鼠标位于该小部件的框架内时,grapMouse()才起作用。
另请参见releaseMouse(),grabKeyboard()和releaseKeyboard()。
void QWidget::grabMouse(const QCursor &cursor)
该函数重载了grabMouse()。抓住鼠标输入并更改光标形状。
光标将采用形状光标(只要抓住了鼠标焦点),并且此小部件将是唯一接收鼠标事件的部件,直到调用releaseMouse()为止。
警告:抓住鼠标可能会锁定终端。注意:请参阅QWidget :: grabMouse()中的注释。
另请参见releaseMouse(),grabKeyboard(),releaseKeyboard()和setCursor()。
int QWidget::grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
将快捷方式添加到Qt的快捷方式系统中,该快捷方式在给定的上下文中监视给定的键序列。
如果上下文是Qt :: ApplicationShortcut,则该快捷方式将应用于整个应用程序。否则,它不是此窗口小部件Qt :: WidgetShortcut的本地窗口,还是窗口本身的Qt :: WindowShortcut的本地窗口。
如果多个窗口小部件捕获了相同的键序列,则在发生键序列时,会以不确定的顺序将QEvent :: Shortcut事件发送到所有对其应用的窗口小部件,但设置了“模糊”标志真实。
警告:您通常不需要使用此功能。而是使用所需的快捷键序列创建QActions(如果您还需要等效的菜单选项和工具栏按钮),或者如果只需要按键序列,则创建QShortcuts。 QAction和QShortcut都可以为您处理所有事件过滤,并提供在用户触发键序列时触发的信号,因此比该底层函数更易于使用。
另请参见releaseShortcut()和setShortcutEnabled()。
QGraphicsProxyWidget QWidget::graphicsProxyWidget() const
返回图形视图中相应嵌入式窗口小部件的代理窗口小部件;否则返回nullptr。
此功能在Qt 4.5中引入。
另请参见QGraphicsProxyWidget :: createProxyForChildWidget()和QGraphicsScene :: addWidget()。
bool QWidget::hasEditFocus() const
如果此小部件当前具有编辑焦点,则返回true;否则返回true。否则为假。此功能仅在Qt for Embedded Linux中可用。
另请参见setEditFocus()和QApplication :: navigationMode()。
focus : const bool
此属性保存此小部件(或其焦点代理)是否具有键盘输入焦点。默认情况下,此属性为false。
注意:为窗口小部件获取此属性的值实际上等效于检查QApplication :: focusWidget()是否引用窗口小部件。
访问函数:
bool hasFocus() const
另请参见setFocus(),clearFocus(),setFocusPolicy()和QApplication :: focusWidget()。
bool QWidget::hasHeightForWidth() const
如果小部件的首选高度取决于其宽度,则返回true;否则,返回false。
此功能在Qt 5.0中引入。
mouseTracking : bool
此属性保存是否为窗口小部件启用了鼠标跟踪如果禁用了鼠标跟踪(默认设置),则仅在移动鼠标时按下至少一个鼠标按钮时,窗口小部件才会接收鼠标移动事件。
如果启用了鼠标跟踪,则即使未按下任何按钮,小部件也将接收鼠标移动事件。
访问函数:
bool hasMouseTracking() const
void setMouseTracking(bool enable)
另请参见mouseMoveEvent()。
tabletTracking : bool
此属性保存是否为小部件启用了数位板跟踪如果禁用了数位板跟踪(默认设置),则当手写笔与数位板接触时,或在按下该笔时至少按下一个笔针按钮时,小部件仅接收数位板移动事件。被感动。
如果启用了数位板跟踪,则即使将鼠标悬停在附近,小部件也会接收数位板移动事件。这对于监视位置以及辅助属性(例如旋转和倾斜)以及在UI中提供反馈很有用。
此属性在Qt 5.9中引入。
访问函数:
bool hasTabletTracking() const
void setTabletTracking(bool enable)
另请参见tabletEvent()。
height : const int
此属性保存窗口小部件的高度,不包括任何窗口框架。有关窗口的几何问题的概述,请参见“窗口几何”文档。
注意:请勿使用此功能在多屏幕桌面上查找屏幕的高度。请阅读此说明以获取详细信息。默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:
int height() const
另请参见geometry, width, and size。
int QWidget::heightForWidth(int w) const
给定宽度w,返回此小部件的首选高度。
如果此窗口小部件具有布局,则默认实现将返回布局的首选高度。
如果没有布局,则默认实现将返回-1,指示首选高度不取决于宽度。
inputMethodHints : Qt::InputMethodHints
特定于输入法的提示提示小部件具有的内容。
这仅与输入窗口小部件有关。输入法使用它来检索有关输入法应如何操作的提示。
例如,如果设置了Qt :: ImhFormattedNumbersOnly标志,则输入法可能会更改其可视组件以反映只能输入数字。
警告:某些小部件需要某些标志才能正常工作。要设置标志,请执行w-> setInputMethodHints(w-> inputMethodHints()| f)而不是w-> setInputMethodHints(f)。
注意:标志只是提示,因此特定的输入法实现可以随意忽略它们。如果要确保输入了某种类型的字符,则还应该在小部件上设置QValidator。
默认值为Qt :: ImhNone。此属性在Qt 4.6中引入。
访问函数:
Qt::InputMethodHints inputMethodHints() const
void setInputMethodHints(Qt::InputMethodHints hints)
另请参见inputMethodQuery()。
QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
此方法仅与输入窗口小部件有关。
输入法使用它来查询窗口小部件的一组属性,以便能够支持复杂的输入法操作,以支持周围的文本和重新转换。
查询指定要查询的属性。
另请参见inputMethodEvent(),QInputMethodEvent,QInputMethodQueryEvent和inputMethodHints。
void QWidget::insertAction(QAction *before, QAction *action)
在操作之前,将操作操作插入到此小部件的操作列表中。
如果before为nullptr或before不是对此小部件的有效操作,则它将追加操作。一个QWidget应该只有一个动作。
另请参见removeAction(),addAction(),QMenu,contextMenuPolicy和actions()。
void QWidget::insertActions(QAction *before, QList actions)
在操作之前,将操作操作插入到此小部件的操作列表中。
如果before为nullptr或before不是对此小部件的有效操作,则它将追加操作。
一个QWidget最多可以包含每个动作之一。
另请参见removeAction(),QMenu,insertAction()和contextMenuPolicy。
isActiveWindow : const bool
此属性保存此窗口小部件的窗口是否为活动窗口。
活动窗口是包含具有键盘焦点的窗口小部件的窗口(如果该窗口小部件不包含窗口小部件,或者该窗口小部件都不接受键盘焦点,则该窗口可能仍具有焦点)。
当弹出窗口可见时,此属性对于活动窗口和弹出窗口均为true。默认情况下,此属性为false。
访问函数:
bool isActiveWindow() const
另请参见activateWindow()和QApplication :: activeWindow()。
bool QWidget::isAncestorOf(const QWidget *child) const
如果此窗口小部件是给定子项的父级(或祖父母等等),并且两个窗口小部件都在同一窗口内,则返回true。否则返回false。
enabled : bool
此属性保存是否启用了窗口小部件。通常,已启用的窗口小部件处理键盘和鼠标事件。禁用的小部件则不会。 QAbstractButton例外。某些小部件在禁用时会以不同的方式显示。例如,按钮可能会将其标签绘制为灰色。
如果您的小部件需要知道何时启用或禁用它,则可以将changeEvent()与QEvent :: EnabledChange类型一起使用。禁用小部件会隐式禁用其所有子项。分别启用所有子控件,除非已明确禁用它们。当其父窗口小部件保持禁用状态时,不可能显式启用不是窗口的子窗口小部件。
默认情况下,此属性为true。
访问函数:
bool isEnabled() const
void setEnabled(bool)
另请参见isEnabledTo(),QKeyEvent,QMouseEvent和changeEvent()。
bool QWidget::isEnabledTo(const QWidget *ancestor) const
如果启用了祖先,则如果启用了此小部件,则返回true;否则,返回false。
如果未明确禁用小部件本身或直到父级(但不包括父级)的每个父级,则属于这种情况。
如果此小部件或其显式禁用,则isEnabledTo(0)返回false。祖先一词在此表示同一窗口中的父窗口小部件。因此,isEnabledTo(0)停在此小部件的窗口,与isEnabled()不同,isEnabled()也考虑了父窗口。
另请参见setEnabled()和enabled。
fullScreen : const bool
此属性保存是否以全屏模式显示窗口小部件。处于全屏模式的窗口小部件占据整个屏幕区域,并且不显示窗口装饰,例如标题栏。
默认情况下,此属性为false。
访问函数:
bool isFullScreen() const
另请参见windowState(), minimized, and maximized。
bool QWidget::isHidden() const
如果小部件被隐藏,则返回true,否则返回false。仅当调用show()时隐藏的窗口小部件才可见。显示父项时,不会自动显示。要检查可见性,请改用!isVisible()(注意感叹号)。 isHidden()暗示!isVisible(),但是小部件可能不可见,也不能同时隐藏。属于不可见小部件的子部件的小部件就是这种情况。
如果满足以下条件,则将小部件隐藏:将它们创建为独立窗口,将它们创建为可见小部件的子级,并调用hide()或setVisible(false)。
maximized : const bool
此属性保存此窗口小部件是否最大化。此属性仅与Windows有关。
注意:由于某些窗口系统的限制,它并不总是报告预期的结果(例如,如果X11上的用户通过窗口管理器最大化窗口,则Qt无法将其与任何其他调整大小区分开)。随着窗口管理器协议的发展,这种情况有望得到改善。
默认情况下,此属性为false。
访问函数:
bool isMaximized() const
另请参见windowState(), showMaximized(), visible, show(), hide(), showNormal(), and minimized。
minimized : const bool
此属性保存是否最小化(图标化)此窗口小部件。
此属性仅与Windows有关。默认情况下,此属性为false。
访问函数:
bool isMinimized() const
另请参见showMinimized(), visible, show(), hide(), showNormal(), and maximized。
modal : const bool
此属性保存窗口小部件是否为模式窗口小部件。
此属性仅对Windows有意义。模态窗口小部件可防止所有其他窗口中的窗口小部件获得任何输入。
默认情况下,此属性为false。
访问函数:
bool isModal() const
另请参见isWindow(),windowModality和QDialog。
visible : bool
此属性保存窗口小部件是否可见,如果直到窗口的所有父窗口小部件都可见,则调用setVisible(true)或show()会将窗口小部件设置为可见状态。
如果祖先不可见,则在显示其所有祖先之前,该窗口小部件将不可见。
如果其大小或位置已更改,则Qt保证窗口小部件会在显示之前立即移动并调整大小。
如果尚未调整窗口小部件的大小,Qt将使用adjustSize()将窗口小部件的大小调整为有用的默认值。调用setVisible(false)或hide()会显式隐藏小部件。除非您显示它,否则即使它的所有祖先都可见,显式隐藏的窗口小部件也将永远不可见。当控件的可见性状态更改时,它会接收显示和隐藏事件。
在隐藏事件和显示事件之间,无需浪费CPU周期来准备或向用户显示信息。例如,视频应用程序可能只是停止生成新帧。屏幕上其他窗口遮挡的窗口小部件被视为可见。图标化的窗口和存在于另一个虚拟桌面(在支持此概念的平台上)上的窗口也是如此。
当窗口系统更改其映射状态(例如,窗口小部件)时,窗口小部件会自发显示和隐藏事件。用户最小化窗口时发生自发的隐藏事件,再次恢复窗口时发生自发的显示事件。您几乎不需要重新实现setVisible()函数。如果需要在显示小部件之前更改某些设置,请改用showEvent()。
如果您需要进行一些延迟的初始化,请使用传递给event()函数的波兰事件。
访问函数:
bool isVisible() const
virtual void setVisible(bool visible)
另请参见show(),hide(),isHidden(),isVisibleTo(),isMinimized(),showEvent()和hideEvent()。
bool QWidget::isVisibleTo(const QWidget *ancestor) const
如果显示祖先,则此小部件将变为可见,则返回true;否则,返回false。
如果小部件本身或直到父级(但不包括父级)的任何父级都没有被显式隐藏,则发生真实情况。如果窗口小部件被屏幕上的其他窗口遮挡,则此函数仍将返回true,但是如果将其移动或将其移动,则该窗口在物理上是可见的。
isVisibleTo(0)与isVisible()相同。
另请参见show(),hide()和isVisible()。
bool QWidget::isWindow() const
如果小部件是一个独立的窗口,则返回true;否则,返回false。
窗口是一个小部件,在视觉上不是任何其他小部件的子级,并且通常具有框架和窗口标题。窗口可以具有父窗口小部件。然后,它将与它的父项组合在一起,并在删除父项时被删除,在最小化父项时被最小化等。如果窗口管理器支持,它还将具有与其父项相同的任务栏条目。
默认情况下,即使在构造函数中指定了父窗口小部件,QDialog和QMainWindow小窗口也是默认窗口。此行为由Qt :: Window标志指定。
另请参见window(),isModal()和parentWidget()。
windowModified : bool
此属性保存窗口中显示的文档是否有未保存的更改。
修改后的窗口是内容已更改但尚未保存到磁盘的窗口。该标志将因平台而异。在macOS上,关闭按钮的外观会有所修改;在其他平台上,窗口标题将带有“ *”(星号)。
窗口标题必须包含“ []”占位符,该占位符指示应在何处显示“ ”。通常,它应该出现在文件名之后(例如,“ document1.txt []-文本编辑器”)。如果未修改窗口,则仅删除占位符。
请注意,如果将小部件设置为已修改,则其所有祖先也将被设置为已修改。但是,如果在窗口小部件上调用setWindowModified(false),它将不会传播到其父级,因为可能已修改了该父级的其他子级。
访问函数:
bool isWindowModified() const
void setWindowModified(bool)
另请参见 windowTitle, Application Example, SDI Example, and MDI Example。
QLayout *QWidget::layout() const
返回此窗口小部件上安装的布局管理器;
如果未安装任何布局管理器,则返回nullptr。布局管理器设置已添加到布局的小部件的子代的几何形状。
另请参见setLayout(),sizePolicy()和Layout Management。
layoutDirection : Qt::LayoutDirection
此属性保存此窗口小部件的布局方向。
默认情况下,此属性设置为Qt :: LeftToRight。在窗口小部件上设置布局方向时,它将传播到窗口小部件的子级,但不会传播到窗口的子级,也不会传播到已为其显式调用setLayoutDirection()的子级。另外,在为父级调用setLayoutDirection()之后添加的子级小部件不会继承父级的布局方向。
从Qt 4.7开始,此方法不再影响文本布局方向。
访问函数:
Qt::LayoutDirection layoutDirection() const
void setLayoutDirection(Qt::LayoutDirection direction)
void unsetLayoutDirection()
另请参见QApplication :: layoutDirection。
locale : QLocale
此属性保存窗口小部件的语言环境,只要未设置特殊的语言环境,就可以是父级的语言环境,也可以是默认语言环境(如果此窗口小部件是顶级窗口小部件)。
如果窗口小部件显示日期或数字,则应使用窗口小部件的语言环境设置日期或数字的格式。此属性在Qt 4.3中引入。
访问函数
QLocale locale() const
void setLocale(const QLocale &locale)
void unsetLocale()
另请参见QLocale和QLocale :: setDefault()。
QPoint QWidget::mapFrom(const QWidget *parent, const QPoint &pos) const
将小部件坐标pos从父级坐标系转换为该小部件的坐标系。父级不能为nullptr,并且必须是调用小部件的父级。
另请参见mapTo(),mapFromParent(),mapFromGlobal()和underMouse()。
QPoint QWidget::mapFromGlobal(const QPoint &pos) const
将全局屏幕坐标pos转换为小部件坐标。
另请参见mapToGlobal(),mapFrom()和mapFromParent()。
QPoint QWidget::mapFromParent(const QPoint &pos) const
将父窗口小部件坐标pos转换为窗口小部件坐标。如果小部件没有父项,则与mapFromGlobal()相同。
另请参见mapToParent(),mapFrom(),mapFromGlobal()和underMouse()。
QRegion QWidget::mask() const
返回当前在窗口小部件上设置的蒙版。如果未设置任何掩码,则返回值将为空白区域。
另请参见setMask(),clearMask(),QRegion :: isEmpty()和Shaped Clock示例。
maximumHeight : int
此属性保存窗口小部件的最大高度(以像素为单位)。此属性对应于maximumSize属性保持的高度。默认情况下,此属性包含一个值16777215。注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。
访问函数:
int maximumHeight() const
void setMaximumHeight(int maxh)
另请参见maximumSize和maximumWidth。
maximumSize : QSize
此属性保存窗口小部件的最大大小(以像素为单位)。不能将窗口小部件的大小调整为大于窗口小部件的最大大小。默认情况下,此属性包含的大小的宽度和高度的值均为16777215。
注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。
访问函数:
QSize maximumSize() const
void setMaximumSize(const QSize &)
void setMaximumSize(int maxw, int maxh)
另请参见maximumWidth,maximumHeight,minimumSize和sizeIncrement。
maximumWidth : int
此属性保存窗口小部件的最大宽度(以像素为单位)。
此属性对应于maximumSize属性所保持的宽度。默认情况下,此属性包含一个值16777215。注意:QWIDGETSIZE_MAX宏的定义限制了小部件的最大大小。
访问函数:
int maximumWidth() const
void setMaximumWidth(int maxw)
另请参见maximumSize和maximumHeight。
minimumHeight : int
此属性保存窗口小部件的最小高度(以像素为单位)。
此属性对应于minimumSize属性保持的高度。默认情况下,此属性的值为0。
访问函数:
int minimumHeight() const
void setMinimumHeight(int minh)
另请参见minimumSize和minimumWidth。
minimumSize : QSize
此属性保存窗口小部件的最小大小。无法将窗口小部件的大小调整为小于窗口小部件的最小大小。
如果当前大小较小,则将小部件的大小强制为最小大小。此函数设置的最小大小将覆盖QLayout定义的最小大小。为了取消设置最小大小,请使用QSize(0,0)的值。
默认情况下,此属性包含一个宽度和高度为零的大小。
访问函数:
QSize minimumSize() const
void setMinimumSize(const QSize &)
void setMinimumSize(int minw, int minh)
另请参见minimumWidth,minimumHeight,maximumSize和sizeIncrement。
minimumSizeHint : const QSize
此属性保存建议的窗口小部件最小尺寸。如果此属性的值是无效尺寸,则不建议使用最小尺寸。
如果没有此小部件的布局,minimumSizeHint()的默认实现将返回无效的大小,否则,将返回布局的最小大小。大多数内置窗口小部件会重新实现minimumSizeHint()。除非设置了minimumSize()或将大小策略设置为QSizePolicy :: Ignore,否则QLayout绝不会将窗口小部件的大小调整为小于最小大小提示。
如果设置了minimumSize(),则最小尺寸提示将被忽略。
访问函数:
virtual QSize minimumSizeHint() const
另请参见QSize :: isValid(),resize(),setMinimumSize()和sizePolicy()。
minimumWidth : int
此属性保存窗口小部件的最小宽度(以像素为单位)。
此属性对应于minimumSize属性保持的宽度。默认情况下,此属性的值为0。
访问函数:
int minimumWidth() const
void setMinimumWidth(int minw)
另请参见minimumSize和minimumHeight。
pos : QPoint
此属性保存窗口小部件在其父窗口小部件中的位置。
如果窗口小部件是窗口,则该位置是桌面上窗口小部件(包括其框架)的位置。更改位置时,小部件(如果可见)会立即接收一个移动事件(moveEvent())。
如果该窗口小部件当前不可见,则可以保证在显示该事件之前会收到一个事件。
默认情况下,此属性包含一个指向原点的位置。警告:在moveEvent()中调用move()或setGeometry()可能导致无限递归。有关Windows几何问题的概述,请参见“窗口几何”文档。
访问函数:
QPoint pos() const
void move(int x, int y)
void move(const QPoint &)
另请参见frameGeometry,size,x()和y()。
void QWidget::move(int x, int y)
这是一个重载函数。这对应于move(QPoint(x,y))。
注意:属性pos的setter函数。
QWidget *QWidget::nativeParentWidget() const
返回此窗口小部件的本机父级,即下一个具有系统标识符的祖先窗口部件,如果没有任何本机父级,则返回nullptr。
此功能在Qt 4.4中引入。
另请参见effectiveWinId()。
QWidget *QWidget::nextInFocusChain() const
返回此小部件的焦点链中的下一个小部件。
另请参见previousInFocusChain()。
normalGeometry : const QRect
此属性保留窗口小部件的几何形状,当它显示为普通(非最大化或全屏)顶级窗口小部件时将显示。
对于子窗口小部件,此属性始终包含一个空矩形。默认情况下,此属性包含一个空矩形。
访问函数:
QRect normalGeometry() const
参见QWidget :: windowState()和QWidget :: geometry。
void QWidget::overrideWindowFlags(Qt::WindowFlags flags)
将窗口小部件的窗口标志设置为标志,而无需告知窗口系统。
警告:除非您真的知道自己在做什么,否则不要调用此函数。另请参见setWindowFlags()。
palette : QPalette
此属性保存小部件的调色板。此属性描述小部件的调色板。呈现标准组件时,窗口小部件的样式使用该调色板,并且可以用作确保自定义窗口小部件可以与本机平台的外观保持一致的一种方式。
不同的平台或不同的样式具有不同的调色板是很常见的。当您为窗口小部件分配新的调色板时,该调色板中的颜色角色将与窗口小部件的默认调色板组合在一起,以形成窗口小部件的最终调色板。小部件的背景角色的调色板条目用于填充小部件的背景(请参阅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样式表一起使用。使用样式表时,可以使用“颜色”,“背景颜色”,“选择颜色”,“选择背景颜色”和“替代背景颜色”来自定义窗口小部件的调色板。
访问函数:
const QPalette & palette() const
void setPalette(const QPalette &)
另请参见QGuiApplication :: palette(),QWidget :: font()和Qt样式表。
QWidget *QWidget::parentWidget() const
返回此窗口小部件的父级,如果没有任何父窗口小部件,则返回nullptr。
QWidget *QWidget::previousInFocusChain() const
previousInFocusChain函数返回此小部件的焦点链中的上一个小部件。
此功能在Qt 4.6中引入。
另请参见nextInFocusChain()。
rect : const QRect
此属性保存窗口小部件的内部几何结构,不包括任何窗口框架。rect属性等于QRect(0,0,width(),height())。
有关Windows几何问题的概述,请参见“窗口几何”文档。
默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:
QRect rect() const
另请参见size。
void QWidget::releaseKeyboard()
释放键盘把手。
另请参见grabKeyboard(),grabMouse()和releaseMouse()。
void QWidget::releaseMouse()
释放鼠标夹。
另请参见grabMouse(),grabKeyboard()和releaseKeyboard()。
void QWidget::releaseShortcut(int id)
从Qt的快捷方式系统中删除具有给定ID的快捷方式。
该小部件将不再接收该快捷方式的键序列的QEvent :: Shortcut事件(除非它具有具有相同键序列的其他快捷方式)。
警告:由于Qt的快捷方式系统在其父窗口小部件销毁时会自动删除快捷方式,因此通常不需要使用此功能。最好使用QAction或QShortcut来处理快捷方式,因为它们比此低级功能更易于使用。还要注意,这是一个昂贵的操作。
另请参见grabShortcut()和setShortcutEnabled()。
void QWidget::removeAction(QAction *action)
从此小部件的动作列表中删除动作动作。
另请参见insertAction(),actions()和insertAction()。
void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(),const QRegion &sourceRegion =QRegion(), QWidget::RenderFlags renderFlags =RenderFlags(DrawWindowBackground | DrawChildren))
使用renderFlags将此小部件的sourceRegion渲染到目标中,以确定如何渲染。渲染从target中的targetOffset开始。
例如:
如果sourceRegion为空区域,则此函数将使用QWidget :: rect()作为区域,即整个窗口小部件。在渲染之前,请确保为目标设备的活动绘画程序(如果有)调用QPainter :: end()。
例如:
注意:要获取QOpenGLWidget的内容,请改用QOpenGLWidget :: grabFramebuffer()。
注意:要获取QGLWidget的内容(不建议使用),请改用QGLWidget :: grabFrameBuffer()或QGLWidget :: renderPixmap()。
此功能在Qt 4.3中引入。
void QWidget::render(QPainter *painter, const QPoint &targetOffset = QPoint(),const QRegion &sourceRegion =QRegion(), QWidget::RenderFlags renderFlags =RenderFlags(DrawWindowBackground | DrawChildren))
这是一个重载函数。将窗口小部件渲染到画家的QPainter :: device()中。渲染时将使用应用于画家的变换和设置。
注意:画家必须处于活动状态。在macOS上,小部件将呈现为QPixmap,然后由绘画者绘制。
另请参见QPainter :: device()。
void QWidget::repaint(int x, int y, int w, int h)
这是一个重载函数。此版本在小部件内重新绘制了一个矩形(x,y,w,h)。如果w为负数,则将其替换为width()-x,如果h为负数,则将其替换为width height()-y。
void QWidget::repaint(const QRect &rect)
这是一个重载函数。
此版本在小部件内重新绘制矩形rect。
void QWidget::repaint(const QRegion &rgn)
这是一个重载函数。
此版本在小部件内重新绘制了rgn区域。
void QWidget::resize(int w, int h)
这是一个重载函数。
这对应于resize(QSize(w,h))。注意:属性大小的设置函数。
void QWidget::resizeEvent(QResizeEvent *event)
可以在子类中重新实现此事件处理程序,以接收在event参数中传递的窗口小部件调整大小事件。调用resizeEvent()时,小部件已经具有新的几何形状。可以通过QResizeEvent :: oldSize()访问旧大小。
在处理调整大小事件后,该窗口小部件将被擦除并立即收到一个绘制事件。在此处理程序内无需(或不应)进行绘制。
另请参见moveEvent(),event(),resize(),QResizeEvent,paintEvent()和Scribble示例。
bool QWidget::restoreGeometry(const QByteArray &geometry)
恢复存储在字节数组几何中的顶级窗口小部件的几何和状态。成功返回true;否则返回false。
如果还原的几何不在屏幕上,它将被修改为位于可用的屏幕几何之内。要恢复使用QSettings保存的几何,可以使用如下代码:
有关Windows几何问题的概述,请参见“窗口几何”文档。
使用QMainWindow :: restoreState()恢复工具栏和停靠小部件的几何形状和状态。此功能在Qt 4.2中引入。另请参见saveGeometry(),QSettings,QMainWindow :: saveState()和QMainWindow :: restoreState()。
QByteArray QWidget::saveGeometry() const
保存顶级小部件的当前几何图形和状态。要在窗口关闭时保存几何,可以实现如下的close事件:
有关Windows几何问题的概述,请参见“窗口几何”文档。使用QMainWindow :: saveState()保存几何图形以及工具栏和停靠小部件的状态。
此功能在Qt 4.2中引入。
另请参见restoreGeometry(),QMainWindow :: saveState()和QMainWindow :: restoreState()。
QScreen *QWidget::screen() const
返回窗口小部件所在的屏幕。
这个功能是在Qt 5.14中引入的。
另请参见windowHandle()。
void QWidget::scroll(int dx, int dy)
将小部件及其子dx像素向右滚动,并dy向下滚动。
dx和dy都可能为负。滚动后,小部件将接收需要重新绘制区域的绘制事件。对于Qt知道是不透明的小部件,这只是新暴露的部分。
例如,如果将不透明的小部件向左滚动8个像素,则只需更新右侧边缘的8个像素宽的条纹。
由于小部件默认情况下会传播其父级的内容,因此您需要设置autoFillBackground属性,或使用setAttribute()设置Qt :: WA_OpaquePaintEvent属性,以使小部件不透明。
对于使用内容传播的小部件,滚动将导致整个滚动区域的更新。
另请参见透明度和双缓冲。
void QWidget::scroll(int dx, int dy, const QRect &r)
这是一个重载函数。
此版本仅滚动r,不会移动小部件的子级。如果r为空或无效,则结果不确定。另请参见QScrollArea。
acceptDrops : bool
此属性保存是否为此窗口小部件启用了放置事件。
将此属性设置为true会向系统宣布此窗口小部件可能能够接受放置事件。如果窗口小部件是桌面(windowType()== Qt :: Desktop),则在另一个应用程序正在使用桌面的情况下,此操作可能会失败。
您可以调用acceptDrops()来测试是否发生这种情况。警告:请勿在拖放事件处理程序中修改此属性。
默认情况下,此属性为false。
访问函数:
bool acceptDrops() const
void setAcceptDrops(bool on)
另请参见Drag and Drop。
accessibleDescription : QString
此属性保存辅助技术所看到的小部件的描述。小部件的可访问描述应传达小部件的功能。
尽管accessibleName应该是简短的字符串(例如,保存),但说明应提供更多上下文,例如保存当前文档。此属性必须本地化。
默认情况下,此属性包含一个空字符串,并且Qt退回到使用工具提示来提供此信息。
访问函数
QString accessibleDescription() const
void setAccessibleDescription(const QString &description)
另请参见QWidget :: accessibleName和QAccessibleInterface :: text()。
accessibleName : QString
此属性保存辅助技术看到的窗口小部件的名称。
这是诸如屏幕阅读器之类的辅助技术宣布此窗口小部件的主要名称。对于大多数窗口小部件,不需要设置此属性。
例如,对于QPushButton,将使用按钮的文本。当窗口小部件不提供任何文本时,设置此属性很重要。例如,仅包含图标的按钮需要设置此属性才能与屏幕阅读器一起使用。
该名称应简短,并且与小部件传达的视觉信息等效。此属性必须本地化。默认情况下,此属性包含一个空字符串。
访问函数:
QString accessibleName() const
void setAccessibleName(const QString &name)
另请参见QWidget :: accessibleDescription和QAccessibleInterface :: text()。
void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
如果on为true,则在此小部件上设置attribute属性;否则为false。否则清除属性。
另请参见testAttribute()。
autoFillBackground : bool
此属性保存是否自动填充窗口小部件背景如果启用,此属性将导致Qt在调用paint事件之前填充窗口小部件的背景。
使用的颜色由小部件调色板中的QPalette :: Window颜色角色定义。此外,除非设置了WA_OpaquePaintEvent或WA_NoSystemBackground属性,否则Windows始终会用QPalette :: Window填充。如果小部件的父级对其背景具有静态渐变,则无法关闭此属性(即,将其设置为false)。
警告:请谨慎使用此属性和Qt样式表。当窗口小部件的样式表具有有效的背景或边框图像时,将自动禁用此属性。默认情况下,此属性为false。
此属性在Qt 4.1中引入。
访问函数:
bool autoFillBackground() const
void setAutoFillBackground(bool enabled)
另请参见Qt :: WA_OpaquePaintEvent,Qt :: WA_NoSystemBackground,以及透明和双缓冲。
void QWidget::setBackgroundRole(QPalette::ColorRole role)
将窗口小部件的后台角色设置为角色。背景角色从小部件的调色板中定义用于渲染背景的画笔。
如果角色为QPalette :: NoRole,则该小部件继承其父级的后台角色。请注意,样式可以从调色板中自由选择任何颜色。
如果无法通过setBackgroundRole()获得所需的结果,则可以修改调色板或设置样式表。
另请参见backgroundRole()和foregroundRole()。
baseSize : QSize
此属性保存小部件的基本大小。如果小部件定义sizeIncrement(),则基本大小用于计算适当的小部件大小。
默认情况下,对于新创建的小部件,此属性包含一个宽度和高度为零的大小。
访问函数:
QSize baseSize() const
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)
另请参见setSizeIncrement()。
void QWidget::setBaseSize(int basew, int baseh)
这是一个重载函数。这对应于setBaseSize(QSize(basew,baseh))。将小部件的基本大小设置为width basew和height baseh。注意:属性baseSize的Setter函数。
void QWidget::setContentsMargins(int left, int top, int right, int bottom)
将窗口小部件内容周围的边距设置为左侧,顶部,右侧和底部。边距由布局系统使用,并且可由子类用于指定要绘制的区域(例如,不包括框架)。更改边距将触发resizeEvent()。
另请参见contentsRect()和contentsMargins()。
void QWidget::setContentsMargins(const QMargins &margins)
这是一个重载函数。 setContentsMargins函数设置小部件内容周围的边距。将窗口小部件内容周围的边距设置为具有由边距确定的大小。
边距由布局系统使用,并且可由子类用于指定要绘制的区域(例如,不包括框架)。更改边距将触发resizeEvent()。
此功能在Qt 4.6中引入。
另请参见contentsRect()和contentsMargins()。
contextMenuPolicy : Qt::ContextMenuPolicy
窗口小部件如何显示上下文菜单。此属性的默认值为Qt :: DefaultContextMenu,这意味着将调用contextMenuEvent()处理函数。
其他值是Qt :: NoContextMenu,Qt :: PreventContextMenu,Qt :: ActionsContextMenu和Qt :: CustomContextMenu。使用Qt :: CustomContextMenu,将发出信号customContextMenuRequested()。
访问函数:Qt :: ContextMenuPolicy contextMenuPolicy()const void setContextMenuPolicy(Qt :: ContextMenuPolicy policy)
另请参见contextMenuEvent(),customContextMenuRequested()和actions()。
cursor : QCursor
此属性保存此小部件的光标形状鼠标光标悬停在此小部件上时将采用此形状。有关一系列有用形状的信息,请参见预定义光标对象的列表。编辑器小部件可能使用I型光标:
如果未设置游标,或者在调用unsetCursor()之后,将使用父级的游标。默认情况下,此属性包含具有Qt :: ArrowCursor形状的光标。
如果鼠标离开小部件,即使鼠标被抓住,某些基础窗口实现也会重置游标。
如果要为所有窗口小部件设置光标,即使在窗口外,也可以考虑QGuiApplication :: setOverrideCursor()。
访问函数:
QCursor cursor() const
void setCursor(const QCursor &)
void unsetCursor()
另请参见QGuiApplication :: setOverrideCursor()。
void QWidget::setEditFocus(bool enable)
如果enable为true,则使该窗口小部件具有编辑焦点,在这种情况下,Qt :: Key_Up和Qt :: Key_Down将正常传递到该窗口小部件;否则,使用Qt :: Key_Up和Qt :: Key_Down更改焦点。
此功能仅在Qt for Embedded Linux中可用。
另请参见hasEditFocus()和QApplication :: navigationMode()。
void QWidget::setFixedSize(const QSize &s)
将窗口小部件的最小和最大大小都设置为s,从而防止窗口小部件增大或缩小。这将覆盖QLayout设置的默认大小限制。
要删除约束,请将大小设置为QWIDGETSIZE_MAX。另外,如果您希望窗口小部件根据其内容具有固定的大小,则可以调用QLayout :: setSizeConstraint(QLayout :: SetFixedSize);
另请参见maximumSize和minimumSize。
void QWidget::setFixedSize(int w, int h)
这是一个重载函数。将小部件的宽度设置为w,将高度设置为h。
void QWidget::setFixedWidth(int w)
将窗口小部件的最小和最大宽度都设置为w而不更改高度。提供方便。
另请参见sizeHint(),minimumSize(),maximumSize()和setFixedSize()。
void QWidget::setFocus(Qt::FocusReason reason)
如果此窗口小部件或其父项之一是活动窗口,则将键盘输入焦点赋予该窗口小部件(或其焦点代理)。
原因参数将传递到此函数发送的任何焦点事件中,用于解释导致窗口小部件获得焦点的原因。
如果窗口不处于活动状态,则当窗口变为活动状态时,将为小部件提供焦点。首先,将要更改的焦点事件发送到焦点小部件(如果有),以告知它即将失去焦点。然后更改焦点,将焦点移出事件发送到上一个焦点项目,将焦点移入事件发送到新项目,以告诉它它刚刚收到了焦点。 (如果焦点移入和焦点移出小部件相同,则不会发生任何事情。)
注意:在嵌入式平台上,setFocus()不会导致输入法由输入法打开。如果您希望这种情况发生,则必须自己将QEvent :: RequestSoftwareInputPanel事件发送给小部件。 setFocus()赋予窗口小部件以焦点,而不管其焦点策略如何,但不会清除任何键盘抓取(请参阅grabKeyboard())。
请注意,如果该小部件是隐藏的,则在显示之前将不接受焦点。
警告:如果您在本身可以从focusOutEvent()或focusInEvent()调用的函数中调用setFocus(),则可能会得到无限递归。
另请参见hasFocus(),clearFocus(),focusInEvent(),focusOutEvent(),setFocusPolicy(),focusWidget(),QApplication :: focusWidget(),grabKeyboard(),grabMouse(),小部件中的键盘焦点和QEvent :: RequestSoftwareInputPanel。
void QWidget::setFocusProxy(QWidget *w)
将小部件的焦点代理设置为小部件w。
如果w为nullptr,则函数会将此窗口小部件重置为没有焦点代理。某些小部件可以“具有焦点”,但是会创建子小部件(例如QLineEdit)来实际处理焦点。
在这种情况下,小部件可以将行编辑设置为其焦点代理。 setFocusProxy()设置在“此小部件”获得焦点时实际上将获得焦点的小部件。
如果存在焦点代理,则setFocus()和hasFocus()在焦点代理上运行。
另请参见focusProxy()。
void QWidget::setForegroundRole(QPalette::ColorRole role)
将小部件的前台角色设置为角色。前景角色从小部件的调色板定义用于绘制前景的颜色。如果角色是QPalette :: NoRole,则该小部件使用与背景角色形成对比的前景角色。
请注意,样式可以从调色板中自由选择任何颜色。如果无法通过setForegroundRole()获得所需的结果,则可以修改调色板或设置样式表。
另请参见fronterRole()和backgroundRole()。
geometry : QRect
此属性保存窗口小部件相对于其父窗口的几何形状,但不包括窗口框架。更改几何时,窗口小部件(如果可见)立即接收到移动事件(moveEvent())和/或调整大小事件(resizeEvent())。
如果窗口小部件当前不可见,则可以确保在显示窗口小部件之前先接收适当的事件。如果大小分量超出由minimumSize()和maximumSize()定义的范围,则将对其进行调整。
警告:在resizeEvent()或moveEvent()中调用setGeometry()可能导致无限递归。有关Windows几何问题的概述,请参见“窗口几何”文档。
默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
访问函数:
const QRect & geometry() const
void setGeometry(int x, int y, int w, int h)
void setGeometry(const QRect &)
另请参见frameGeometry(),rect(),move(),resize(), moveEvent(),resizeEvent(),minimumSize()和maximumSize()。
void QWidget::setGeometry(int x, int y, int w, int h)
这是一个重载函数。这对应于setGeometry(QRect(x,y,w,h))。注意:属性几何的设置器功能。
void QWidget::setGraphicsEffect(QGraphicsEffect *effect)
setGraphicsEffect函数用于设置小部件的图形效果。将效果设置为小部件的效果。
如果此小部件上已经安装了效果,则QWidget将在安装新效果之前删除现有效果。
如果effect是在其他窗口小部件上安装的效果,则setGraphicsEffect()将从该窗口小部件中删除效果并将其安装在此窗口小部件上。 QWidget拥有所有权。注意:此功能会将效果应用于自身及其所有子代。
注意:基于OpenGL的小部件(例如QGLWidget,QOpenGLWidget和QQuickWidget)不支持图形效果。此功能在Qt 4.6中引入。
另请参见graphicsEffect()。
void QWidget::setLayout(QLayout *layout)
将此窗口小部件的布局管理器设置为布局。如果此窗口小部件上已经安装了布局管理器,则QWidget将不允许您安装另一个。必须先删除现有的布局管理器(由layout()返回),然后才能使用新布局调用setLayout()。
如果layout是其他窗口小部件上的布局管理器,则setLayout()将重设该布局并使之成为该窗口小部件的布局管理器。例:
调用此函数的另一种方法是将此小部件传递给布局的构造函数。 QWidget将获得布局的所有权。
另请参见layout()和Layout Management。
void QWidget::setMask(const QBitmap &bitmap)
仅使小部件的位图具有对应的1位的像素可见。如果该区域包括小部件的rect()外部的像素,则取决于平台,该区域中的窗口系统控件可能不可见。
请注意,如果区域特别复杂,此效果可能会很慢。
以下代码显示了如何使用具有Alpha通道的图像来生成小部件的蒙版:
该代码显示的标签会使用其中包含的图像进行遮罩,从而使不规则形状的图像直接绘制到屏幕上。蒙版小部件仅在其可见部分接收鼠标事件。
另请参见mask(),clearMask(),windowOpacity()和Shaped Clock示例。
void QWidget::setMask(const QRegion ®ion)
这是一个重载函数。仅使窗口小部件的重叠区域部分可见。
如果该区域包括小部件的rect()外部的像素,则取决于平台,该区域中的窗口系统控件可能不可见。
请注意,如果区域特别复杂,此效果可能会很慢。
另请参见windowOpacity。
toolTip : QString
此属性包含窗口小部件的工具提示。请注意,默认情况下,仅针对活动窗口的子窗口小部件显示工具提示。您可以通过在窗口上而不是在带有工具提示的小部件上设置属性Qt :: WA_AlwaysShowToolTips来更改此行为。
如果要控制工具提示的行为,则可以拦截event()函数并捕获QEvent :: ToolTip事件(例如,如果要自定义应显示工具提示的区域)。
默认情况下,此属性包含一个空字符串。
访问函数:
QString toolTip() const
void setToolTip(const QString &)
另请参见QToolTip,statusTip和whatsThis。
toolTipDuration : int
此属性保存窗口小部件的工具提示持续时间,以毫秒为单位指定工具提示的显示时间。
如果该值为-1(默认值),则根据工具提示的长度来计算持续时间。
此属性在Qt 5.2中引入。
访问函数:
int toolTipDuration() const
void setToolTipDuration(int msec)
另请参见toolTip。
whatsThis : QString
此属性保存小部件的“这是什么”帮助文本。默认情况下,此属性包含一个空字符串。
访问函数:
QString whatsThis() const
void setWhatsThis(const QString &)
另请参见QWhatsThis,QWidget :: toolTip和QWidget :: statusTip。
windowFilePath : QString
此属性保存与小部件关联的文件路径。
此属性仅对Windows有意义。它将文件路径与窗口关联。如果设置了文件路径,但尚未设置窗口标题,则Qt会将窗口标题设置为使用QFileInfo :: fileName()获得的指定路径的文件名。
如果在任何时候设置了窗口标题,则窗口标题优先,并且将显示而不是文件路径字符串。此外,在macOS上,这样做还有一个好处,即假设文件路径存在,它将为窗口设置代理图标。
如果未设置文件路径,则此属性包含一个空字符串。默认情况下,此属性包含一个空字符串。
此属性在Qt 4.4中引入。
访问函数:
QString windowFilePath() const
void setWindowFilePath(const QString &filePath)
另请参见windowTitle和windowIcon。
windowFlags : Qt::WindowFlags
窗口标志是一种类型(例如Qt :: Dialog)和零个或多个窗口系统提示(例如Qt :: FramelessWindowHint)的组合。
如果窗口小部件的类型为Qt :: Widget或Qt :: SubWindow并成为窗口(Qt :: Window,Qt :: Dialog等),则将其放置在桌面上的位置(0,0)。
如果窗口小部件是一个窗口并变为Qt :: Widget或Qt :: SubWindow,则将其放置在相对于其父窗口小部件的位置(0,0)。
注意:更改窗口的标志时,此函数将调用setParent(),从而使小部件被隐藏。您必须调用show()使小部件再次可见。
访问函数:
Qt::WindowFlags windowFlags() const
void setWindowFlags(Qt::WindowFlags type)
另请参见windowType(),setWindowFlag()和Window Flags示例。
windowIcon : QIcon
此属性包含窗口小部件的图标。此属性仅对Windows有意义。
如果未设置任何图标,则windowIcon()返回应用程序图标(QApplication :: windowIcon())。
注意:在macOS上,窗口图标代表活动文档,除非使用setFilePath设置了文件路径,否则将不会显示窗口图标。
访问函数:
QIcon windowIcon() const
void setWindowIcon(const QIcon &icon)
通知程序信号:
void windowIconChanged(const QIcon &icon)
另请参见windowTitle和setFilePath。
windowModality : Qt::WindowModality
该属性保存哪些窗口被模式窗口小部件阻止。此属性仅对窗口有意义。模态窗口小部件可防止其他窗口中的窗口小部件获得输入。该属性的值控制在小部件可见时哪些窗口被阻止。
在窗口可见时更改此属性无效;您必须先隐藏()小部件,然后再次显示()。
默认情况下,此属性为Qt :: NonModal。
此属性在Qt 4.1中引入。
访问函数:
Qt::WindowModality windowModality() const
void setWindowModality(Qt::WindowModality windowModality)
另请参见isWindow(),QWidget :: modal和QDialog。
windowOpacity : double
此属性保存窗口的不透明度。
不透明度的有效范围是1.0(完全不透明)到0.0(完全透明)。默认情况下,此属性的值为1.0。在支持Composite扩展的Embedded Linux,macOS,Windows和X11平台上可以使用此功能。
注意:在X11上,您需要运行一个复合管理器,并且所使用的窗口管理器需要X11特定的_NET_WM_WINDOW_OPACITY原子。
警告:将此属性从不透明更改为透明可能会导致绘制事件,需要正确处理窗口才能正确显示窗口。这主要影响QPixmap :: grabWindow()的使用。
另请注意,半透明窗口的更新和调整大小比不透明窗口要慢得多。
访问函数:
qreal windowOpacity() const
void setWindowOpacity(qreal level)
另请参见setMask()。
QString QWidget::windowRole() const
返回窗口的角色或空字符串。
另请参见setWindowRole(),windowIcon和windowTitle。
Qt::WindowType QWidget::windowType() const
返回此窗口小部件的窗口类型。这与windowFlags()和Qt :: WindowType_Mask相同。
另请参见windowFlags。
x : const int
此属性保存窗口小部件相对于其父窗口(包括任何窗口框架)的x坐标。有关窗口的几何问题的概述,请参见“窗口几何”文档。
默认情况下,此属性的值为0。
访问函数:
int x() const
另请参见frameGeometry,y和pos。
y : const int
此属性保存窗口小部件相对于其父窗口的y坐标,包括所有窗口框架。有关窗口的几何问题的概述,请参见“窗口几何”文档。
默认情况下,此属性的值为0。
访问函数:
int y() const
另请参见frameGeometry,x和pos。