自己学习备忘用
一、头文件
工程文件中需添加:
QT += widgets
需添加头文件:
#include <QWidget>
二、继承
1.父类
QObject | QPaintDevice |
2.子类
QAbstractButton | QAbstractSlider | QAbstractSpinBox |
QCalendarWidget | QComboBox | QDesignerActionEditorInterface |
QDesignerFormWindowInterface | QDesignerObjectInspectorInterface | QDesignerPropertyEditorInterface |
QDesignerWidgetBoxInterface | QDialog | QDialogButtonBox |
QFocusFrame | QFrame | QGroupBox |
QHelpFilterSettingsWidget | QHelpSearchQueryWidget | QHelpSearchResultWidget |
QKeySequenceEdit | QLineEdit | QMainWindow |
QMdiSubWindow | QMenu | QMenuBar |
QProgressBar | QQuickWidget | QRubberBand |
QSizeGrip | QSplashScreen | QSplitterHandle |
QStatusBar | QSvgWidget | QTabBar |
QTabWidget | QToolBar | QWizardPage |
三、公共类型
acceptDrops : bool | accessibleDescription : QString | accessibleName : QString |
autoFillBackground : bool | baseSize : QSize | childrenRect : const QRect |
childrenRegion : const QRegion | contextMenuPolicy : Qt::ContextMenuPolicy | cursor : QCursor |
enabled : bool | focus : const bool | focusPolicy : Qt::FocusPolicy |
font : QFont | frameGeometry : const QRect | frameSize : const QSize |
fullScreen : const bool | geometry : QRect | height : const int |
inputMethodHints : Qt::InputMethodHints | isActiveWindow : const bool | layoutDirection : Qt::LayoutDirection |
locale : QLocale | maximized : const bool | maximumHeight : int |
maximumSize : QSize | maximumWidth : int | minimized : const bool |
minimumHeight : int | minimumSize : QSize | minimumSizeHint : const QSize |
minimumWidth : int | modal : const bool | mouseTracking : bool |
normalGeometry : const QRect | palette : QPalette | pos : QPoint |
rect : const QRect | size : QSize | sizeHint : const QSize |
sizeIncrement : QSize | sizePolicy : QSizePolicy | statusTip : QString |
styleSheet : QString | tabletTracking : bool | toolTip : QString |
toolTipDuration : int | updatesEnabled : bool | visible : bool |
width : const int | windowFilePath : QString | windowFlags : Qt::WindowFlags |
windowIcon : QIcon | windowModality : Qt::WindowModality | windowModified : bool |
windowOpacity : double | windowTitle : QString | x : const int |
y : const int |
1.enum QWidget::RenderFlag
这个枚举描述了在调用QWidget::render()时如何呈现各控件。
枚举常量 | 枚举值 | 说明 |
---|---|---|
QWidget::DrawWindowBackground | 0x1 | 如果启用此选项,即使未设置autoFillBackground,控件的背景也会呈现到目标中。默认情况下,此选项处于启用状态。 |
QWidget::DrawChildren | 0x2 | 如果启用此选项,则控件的子控件将递归呈现到目标中。默认情况下,此选项处于启用状态 |
QWidget::IgnoreMask | 0x4 | 如果启用此选项,则在渲染到目标时会忽略控件的QWidget::mask()。默认情况下,此选项处于禁用状态。 |
2. flags RenderFlags
该参数存储着各RenderFlag或运算后的值。
四、属性
acceptDrops : bool | accessibleDescription : QString | accessibleName : QString |
autoFillBackground : bool | baseSize : QSize | childrenRect : const QRect |
childrenRegion : const QRegion | contextMenuPolicy : Qt::ContextMenuPolicy | cursor : QCursor |
focus : const bool | focusPolicy : Qt::FocusPolicy | font : QFont |
frameSize : const QSize | fullScreen : const bool | geometry : QRect |
height : const int | inputMethodHints : Qt::InputMethodHints | isActiveWindow : const bool |
layoutDirection : Qt::LayoutDirection | locale : QLocale | maximized : const bool |
maximumHeight : int | maximumSize : QSize | maximumWidth : int |
minimized : const bool | minimumHeight : int | minimumSize : QSize |
minimumSizeHint : const QSize | minimumWidth : int | modal : const bool |
mouseTracking : bool | normalGeometry : const QRect | palette : QPalette |
pos : QPoint | rect : const QRect | size : QSize |
sizeHint : const QSize | sizeIncrement : QSize | sizePolicy : QSizePolicy |
statusTip : QString | styleSheet : QString | tabletTracking : bool |
toolTip : QString | toolTipDuration : int | updatesEnabled : bool |
visible : bool | whatsThis : QString | width : const int |
windowFilePath : QString | windowFlags : Qt::WindowFlags | windowIcon : QIcon |
windowModality : Qt::WindowModality | windowModified : bool | windowOpacity : double |
windowTitle : QString | x : const int | y : const int |
## 1.acceptDrops : bool 该属性表示是否为此控件启用拖拽事件,设置为true表示启用拖拽事件。
相关函数:
bool acceptDrops() const
void setAcceptDrops(bool on)
## 2.accessibleDescription : QString 该属性提供关于对象的可视外观的文字说明。该说明主要用来为视力较差的用户或盲人用户提供提示,也可以用于上下文搜素。
相关函数:
QString accessibleDescription() const
void setAccessibleDescription(const QString &description)
3.accessibleName : QString
该属性提供关于对象的名称,该说明主要用来为视力较差的用户或盲人用户提供提示,也可以用于上下文搜素。当控件不提供任何文本时,设置此属性很重要。
相关函数:
QString accessibleName() const
void setAccessibleName(const QString &name)
4.autoFillBackground : bool
该属性表示控件背景是否自动填充。如果启用,Qt在调用绘制事件之前会填充控件的背景。使用的颜色由控件调色板中的QPalette::Window颜色定义。此外,除非设置了WA_OpaquePaintEvent或WA_NoSystemBackground属性,否则窗口始终填充QPalette::Window。如果窗口控件的父级具有其背景的静态渐变,则不能关闭该属性(即设置为false)。
特殊说明:当控件具有有效背景或边框图像的样式表时,此属性将自动禁用。
相关函数:
bool autoFillBackground() const
void setAutoFillBackground(bool enabled)
5.baseSize : QSize
该属性表示控件的基本大小。如果控件定义了sizeIncrement(),则基本大小用于计算适当的控件大小。默认情况下,该属性包含宽度和高度为0。
相关函数:
QSize baseSize() const
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)
6.childrenRect : const QRect
该属性定义 widget 的子对象所占用的边框(不包括隐藏的子对象)。默认情况下,对于没有子类的 Widget,此属性包含位于原点的宽度和高度为零的矩形。
相关函数:
QRegion childrenRegion() const
7.childrenRegion : const QRegion
该属性定义 widget 的子对象所占用的裁剪区域(不包括隐藏的子对象)。默认情况下,对于没有子类的 Widget,此属性包含一个空区域。
相关函数:
QRegion childrenRegion() const
8.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)
9.cursor : QCursor
该属性定义控件的鼠标样式。如果没有设置鼠标样式,或调用了unsetCursor(),则将使用父级的鼠标样式。默认情况下,此属性包含具有Qt::ArrowCursor样式(箭头)的鼠标。
相关函数:
QCursor cursor() const
void setCursor(const QCursor &)
void unsetCursor()
10.enabled : bool
该属性定义了是否启用Widget。
通常,启用的 Widget 会处理键盘和鼠标事件;禁用的 widget 则不会(QAbstractButton 例外)。
某些 Widget 在禁用时以不同的方式显示自身。例如,按钮可能会将其标签绘制为灰色。如果需要知道控件是否被启用或禁用,你可以使用 QEvent::EnabledChange 类型的 changeEvent()。
禁用 widget 会隐式禁用其所有子项。启用将分别启用所有子 widget,除非它们已被明确禁用。当其父 Widget 保持禁用状态时,无法显式启用不是窗口的子 Widget。
默认情况下,该属性为 true。
相关函数:
bool isEnabled() const
void setEnabled(bool)
11. focus : const bool
该属性定义了此控件(或其焦点代理)是否具有键盘输入焦点
默认情况下,此属性为 false
注意:获取 widget 的该属性的值实际上等同于检查 QApplication::focusWidget() 是否引用 widget。
相关函数:
bool hasFocus() const
12.focusPolicy : Qt::FocusPolicy
此属性定义widget 接受键盘焦点的方式
如果小控件通过Tab键接受键盘焦点,则策略为Qt::TabFocus,如果小控件通过单击接受焦点,则为Qt::ClickFocus,如果两者同时接受,则为Qt::StrongFocus,如果它不接受焦点,则为Qt::NoFocus(默认)。
如果控件处理键盘事件,则必须为控件启用键盘焦点。这通常是通过 widget 的构造函数完成的。例如,QLineEdit 构造函数调用 setFocusPolicy(Qt::StrongFocus)。
如果 Widget 具有焦点代理,则焦点策略将传播到该代理。
相关函数:
Qt::FocusPolicy focusPolicy() const
void setFocusPolicy(Qt::FocusPolicy policy)
13.font : QFont
该属性定义控件当前设置的字体。
当呈现标准控件时,该字体由控件的样式使用,并且可以作为一种手段来确保自定义小控件可以与本机平台的外观保持一致。不同的平台或不同的样式通常为应用程序定义不同的字体。当为控件分配新字体时,来自该字体的属性将与控件的默认字体相结合,以形成控件的最终字体。可以调用fontInfo()来获取控件最终字体的副本。最终的字体也用于初始化QPainter的字体。
默认值取决于系统环境。QApplication维护一个系统/主题字体,作为所有控件的默认字体。某些类型的控件也可能有特殊的字体默认值。还可以通过将自定义字体和控件的名称传递给QApplication::setFont()来定义小控件的默认字体。最后,将字体与Qt的字体数据库进行匹配,以找到最佳匹配。
QWidget将显式字体属性从父级传播到子级。如果更改字体的特定属性并将该字体分配给控件,则该属性将传播到小控件的所有子级,覆盖该属性的任何系统默认值。请注意,默认情况下,字体不会传播到窗口,除非启用Qt::WA_WindowPropagation属性。
QWidget的字体传播类似于其调色板传播。用于呈现所有标准Qt控件的内容的当前样式可以自由选择使用控件字体,或者在某些情况下忽略它(部分或完全)。特别是某些样式(如GTK样式、Mac样式和Windows Vista样式)对控件字体应用特殊修改,以匹配平台的本机外观。因此,将属性分配给控件的字体并不保证更改控件的外观。
注意:如果在与setFont()相同的控件上使用Qt样式表,如果设置冲突,则样式表将优先。
相关函数:
const QFont &font() const
void setFont(const QFont &)
14.frameGeometry : const QRect
该属性定义控件相对于其父控件的几何结构,包括任何窗口框架。
默认情况下,该属性包含一个值,该值取决于用户的平台和屏幕几何图形。
相关函数:
QRect frameGeometry() const
15.frameSize : const QSize
该属性定义控件的大小,包括任何窗口框架
默认情况下,该属性包含一个值,该值取决于用户的平台和屏幕几何图形。
相关函数:
QSize frameSize() const
16.fullScreen : const bool
该属性定义控件是否以全屏模式显示,全屏模式下的控件占据整个屏幕区域,不显示窗口装饰,如标题栏。
默认情况下,该属性为false。
相关函数:
bool isFullScreen() const
17.geometry : QRect
该属性定义控件相对于其父控件(不包括窗口框架)的几何尺寸。
当更改其几何形状时,如果该控件可见,它会立即收到一个移动事件moveEvent()或一个调整大小事件resizeEvent()。如果该件当前不可见,则保证在显示之前会收到相应的事件。
如果大小控件超出了minimumSize()和maximumSize()定义的范围,则对其进行调整。
警告:在resizeEvent()或moveEvent()内调用setGeometry()可能会导致无限递归。
默认情况下,此属性的值取决于用户的平台和屏幕尺寸。
相关函数:
const QRect &geometry() const
void setGeometry(int x, int y, int w, int h)
void setGeometry(const QRect &)
18.height : const int
该属性定义小控件的高度,不包括任何窗口框架
默认情况下,该属性的值取决于用户的平台和屏幕尺寸。
相关函数:
int height() const
19.inputMethodHints : Qt::InputMethodHints
该属性定义控件具有哪些特定于输入方法的提示。
这仅与输入控件相关。输入方法使用它来检索关于输入方法应如何操作的提示。例如,如果设置了Qt::ImhFormattedNumbersOnly标志,则输入方法可以更改其视觉控件,以反映只能输入数字。
警告:一些控件需要某些标志才能按预期工作。要设置标志,请执行w->setInputMethodHints(w->inputMethodHints()|f),而不是w->SetInputMathodHint(f)。
注意:标志只是提示,因此特定的输入方法实现可以随意忽略它们。如果要确保输入了特定类型的字符,则还应该在控件上设置QValidator。
默认值为Qt::ImhNone。
相关函数:
Qt::InputMethodHints inputMethodHints() const
void setInputMethodHints(Qt::InputMethodHints hints)
20.isActiveWindow : const bool
该属性定义该控件的窗口是否为活动窗口。
活动窗口是包含具有键盘焦点的控件的窗口(如果窗口没有控件或其任何控件都不接受键盘焦点,则该窗口可能仍然具有焦点)。
当弹出窗口可见时,此属性对于活动窗口和弹出窗口都为true。
默认情况下,该属性为false。
相关函数:
bool isActiveWindow() const
21.layoutDirection : Qt::LayoutDirection
该属性定义此控件的布局方向。
注意:自Qt 4.7以来,此方法不再影响文本布局方向。
默认情况下,该属性设置为Qt::LeftToRight。
当在控件上设置布局方向时,它将传播到控件的子控件,但不会传播到作为窗口的子级,也不会传播到已显式调用setLayoutDirection()的子级。此外,在为父级调用setLayoutDirection()之后添加的子窗口控件不会继承父级的布局方向。
相关函数:
Qt::LayoutDirection layoutDirection() const
void setLayoutDirection(Qt::LayoutDirection direction)
void unsetLayoutDirection()
22.locale : QLocale
该属性定义控件的区域设置。
只要没有设置特殊的语言环境,这要么是父语言环境,要么(如果该控件是顶级小控件)是默认语言环境。
如果控件显示日期或数字,则应使用控件的区域设置来格式化这些日期或数字。
相关函数:
QLocale locale() const
void setLocale(const QLocale &locale)
void unsetLocale()
23.maximized : const bool
该属性定义此控件是否最大化,此属性仅与窗口相关。
注意:由于某些窗口系统的限制,这并不总是报告预期结果(例如,如果X11上的用户通过窗口管理器最大化窗口,Qt无法将其与任何其他调整大小区分开来)。
默认情况下,该属性为false。
相关函数:
bool isMaximized() const
24.maximumHeight : int
该属性定义了控件的最大高度(以像素为单位)属性对应maximumSize属性保持的高度。
默认情况下,该属性包含值16777215。
注意:QWIDGETSIZE_MAX宏的定义限制了小控件的最大大小。
相关函数:
int maximumHeight() const
void setMaximumHeight(int maxh)
25.maximumSize : QSize
该属性定义了控件的最大大小(以像素为单位)控件的大小不能大于最大小控件大小。默认情况下,该属性包含宽度和高度值均为16777215的大小。
注意:QWIDGETSIZE_MAX宏的定义限制了小控件的最大大小。
相关函数:
QSize maximumSize() const
void setMaximumSize(const QSize &)
void setMaximumSize(int maxw, int maxh)
26.maximumWidth : int
该属性定义了控件的最大宽度(以像素为单位),此属性对应maximumSize属性所保持的宽度。默认情况下,该属性包含值16777215。
注意:QWIDGETSIZE_MAX宏的定义限制了控件的最大大小。
相关函数:
int maximumWidth() const
void setMaximumWidth(int maxw)
27.minimized : const bool
该属性定义了控件是否最小化(图标化),此属性仅与窗口相关。
默认情况下,该属性为false。
相关函数:
bool isMinimized() const
28.minimumHeight : int
该属性定义了控件的最小高度(以像素为单位),此属性对应minimumSize属性保持的高度。
默认情况下,该属性的值为0。
相关函数:
int minimumHeight() const
void setMinimumHeight(int minh)
29.minimumSize : QSize
该属性定义了控件的最小大小,控件的大小不能小于最小小控件大小。如果当前大小较小,则控件的大小被强制为最小大小。
此函数设置的最小大小将覆盖QLayout定义的最小大小。要取消设置最小大小,请使用值QSize(0,0)。
默认情况下,该属性包含宽度和高度为零的大小。
相关函数:
QSize minimumSize() const
void setMinimumSize(const QSize &)
void setMinimumSize(int minw, int minh)
30.minimumSizeHint : const QSize
该属性定义了控件的建议最小大小,如果此属性的值是无效的大小,则不建议最小大小。
如果该控件没有布局,则minimumSizeHint()的默认实现返回无效的大小,否则返回布局的最小大小。大多数内置控件会重新实现minimumSizeHint()。
QLayout永远不会将控件调整为小于最小大小提示的大小,除非设置了minimumSize()或大小策略设置为QSizePolicy::Ignore。如果设置了minimumSize(),则将忽略最小大小提示。
相关函数:
virtual QSize minimumSizeHint() const
31.minimumWidth : int
该属性定义了控件的最小宽度(以像素为单位),该属性对应minimumSize属性所保持的宽度。
默认情况下,该属性的值为0。
相关函数:
int minimumWidth() const
void setMinimumWidth(int minw)
32.modal : const bool
该属性定义了控件是否为模式控件,该属性仅对窗口有意义。模式控件会防止所有其他窗口中的控件获得任何输入。
默认情况下,该属性为false。
相关函数:
bool isModal() const
33.mouseTracking : bool
该属性定义了是否为控件启用鼠标跟踪,如果禁用鼠标跟踪(默认),则控件仅在移动鼠标且至少按下一个鼠标按钮时接收鼠标移动事件。
如果启用了鼠标跟踪,则即使没有按下按钮,控件也会接收鼠标移动事件。
相关函数:
bool hasMouseTracking() const
void setMouseTracking(bool enable)
34.normalGeometry : const QRect
该属性定义了控件的几何图形,当它显示为普通(非最大化或全屏)顶级控件时,将显示。
如果控件已经处于此状态,则几何体将反映控件件的当前几何体()。
对于子窗口控件,该属性始终保持空矩形。
默认情况下,此属性包含空矩形。
相关函数:
QRect normalGeometry() const
35.palette : QPalette
该属性定义了控件的调色板,调色板由控件的样式在呈现标准控件时使用,并且可用作确保自定义控件可以与本机平台的外观保持一致的方法。不同的平台或不同的样式具有不同的调色板是很常见的。
当为控件分配新的调色板时,来自该调色板的颜色角色与控件的默认调色板相结合,形成控件的最终调色板。控件背景色的调色板条目用于填充小控件的背景,前景色初始化QPainter的pen。
默认值取决于系统环境。QApplication维护一个系统/主题调色板,该调色板用作所有控件的默认值。某些类型的控件也可能有特殊的调色板默认值(例如,在Windows Vista上,从QMenuBar派生的所有类都具有特殊的默认调色板)。还可以通过将自定义调色板和控件的名称传递给QApplication::setPalette()来定义控件的默认调色板。最后,样式始终可以选择在分配时渲染调色板。
QWidget将显式调色板角色从父级传播到子级。如果将画笔或颜色分配给调色板上的特定角色,并将该调色板分配给控件,则该角色将传播到控件的所有子级,覆盖该角色的任何系统默认值。
注意:默认情况下,调色板不会传播到窗口,除非启用Qt::WA_WindowPropagation属性。
QWidget的调色板传播类似于其字体传播。用于呈现所有标准Qt控件的内容的当前样式可以从控件调色板中自由选择颜色和画笔,或者在某些情况下忽略调色板(部分或完全)。特别的,某些样式(如GTK样式、Mac样式和Windows Vista样式)依赖于第三方API来呈现控件的内容,并且这些样式通常不遵循调色板。因此,将角色分配给控件的调色板并不保证更改控件的外观。但是,可以选择应用样式表。
警告:请勿将此功能与Qt样式表一起使用。使用样式表时,可以使用“颜色”、“背景色”、“选择颜色”、”选择背景色“和”交替背景色“自定义控件的调色板。
相关函数:
const QPalette &palette() const
void setPalette(const QPalette &)
36.pos : QPoint
该属性定义了窗口控件在其父窗口控件中的位置,如果控件是窗口,则位置是控件在桌面上的位置,包括其框架。
更改位置时,控件(如果可见)立即接收移动事件(moveEvent())。如果控件当前不可见,则可以保证它在显示之前接收事件。
默认情况下,该属性包含引用原点的位置。
警告:在moveEvent()中调用move()或setGeometry()可能导致无限递归。
注意:并非所有窗口系统都支持设置或查询顶级窗口位置。在这样的系统上,以编程方式移动窗口可能没有任何效果,并且可以为当前位置返回人工值,例如QPoint(0,0)。
相关函数:
QPoint pos() const
void move(int x, int y)
void move(const QPoint &)
37. rect : const QRect
该属性定义了 Widget 的内部几何图形,不包括任何窗口框架。
rect 属性等于 QRect(0, 0, width(), height())。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何图形。
相关函数:
QRect rect() const
38.size : QSize
该属性定义了 Widget 的大小,不包括任何窗口框架。
如果 widget 在调整大小时可见,它会立即收到 resize 事件 (resizeEvent())。如果 Widget 当前不可见,则保证在显示之前收到事件。
如果大小超出 minimumSize() 和 maximumSize() 定义的范围,则会调整大小。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何图形。
警告:在 resizeEvent() 中调用 resize() 或 setGeometry() 可能会导致无限递归。
注意:将大小设置为 QSize(0, 0) 将导致小控件不显示在屏幕上。这也适用于 Windows。
相关函数:
QSize size() const
void resize(int w, int h)
void resize(const QSize &)
39. sizeHint : const QSize
该属 性定义了 Widget 的建议大小。
如果该属性的值是无效的大小,则不建议使用大小。
如果此该widget 没有布局,则 sizeHint() 的默认实现将返回无效的大小,否则返回布局的首选大小。
相关函数:
virtual QSize sizeHint() const
40.sizeIncrement : QSize
该属性定义了 widget 的大小增量。
当用户调整窗口大小时,大小将以 sizeIncrement().width() 像素水平移动,以 sizeIncrement.height() 像素垂直移动,以 baseSize() 为基础。首选小控件大小适用于非负整数 i 和 j:
width = baseSize().width() + i * sizeIncrement().width();
height = baseSize().height() + j * sizeIncrement().height();
注意:,虽然可以为所有 widget 设置大小增量,但它只会影响窗口。
默认情况下,该属性包含宽度和高度为零的大小。
警告: 大小增量在 Windows 下没有影响,X11 上的窗口管理器可能会忽略它。
相关函数:
QSize sizeIncrement() const
void setSizeIncrement(const QSize &)
void setSizeIncrement(int w, int h)
41.sizePolicy : QSizePolicy
该属性定义了小控件的默认布局行为。
如果有一个QLayout管理此小控件的子控件,则使用该布局指定的大小策略。如果没有这样的QLayout,则使用此函数的结果。
默认策略是Preferred/Preference,这意味着小控件可以自由调整大小,但更推荐返回size sizeInt()。
按钮式小控件设置大小策略,指定它们可以水平拉伸,但垂直固定。这同样适用于行编辑控件(如QLineEdit、QSpinBox或可编辑的QComboBox)和其他水平方向的小控件(如QProgressBar)。QToolButton通常是方形的,因此它们允许双向增长。支持不同方向的小控件(如QSlider、QSrollBar或QHeader)仅指定在相应方向上拉伸。可以提供滚动条的小控件(通常是QSrollArea的子类)倾向于指定它们可以使用额外的空间,并且可以使用小于sizeInt()的空间。
相关函数:
QSizePolicy sizePolicy() const
void setSizePolicy(QSizePolicy)
void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
42.statusTip : QString
该属性定义了小控件的状态提示
默认情况下,此属性包含空字符串。
相关函数:
QString statusTip() const
void setStatusTip(const QString &)
43.styleSheet : QString
该属性定义了小控件的样式表。
样式表包含对小控件样式的自定义的文本描述,如Qt样式表文档中所述。从Qt 4.5开始,Qt样式表完全支持macOS。
警告:Qt样式表目前不支持自定义QStyle子类。
相关函数:
QString styleSheet() const
void setStyleSheet(const QString &styleSheet)
44.tabletTracking : bool
该属性定义了是否为小控件启用平板电脑跟踪。
如果禁用平板电脑跟踪(默认设置),则小控件仅在手写笔与平板电脑接触时,或者在移动手写笔且按下至少一个手写笔按钮时,才会接收平板电脑移动事件。
如果启用了平板电脑跟踪,即使在附近悬停,小部件也会接收平板电脑移动事件。这对于监视位置以及旋转和倾斜等辅助属性以及在UI中提供反馈非常有用。
相关函数:
bool hasTabletTracking() const
void setTabletTracking(bool enable)
45.toolTip : QString
该属性定义了小控件的工具提示。
注意:默认情况下,工具提示仅显示为活动窗口的子窗口的小控件。可以通过在窗口上设置属性Qt::WA_AlwaysShowToolTips来更改此行为,而不是在带有工具提示的小控件上更改。
如果想控制工具提示的行为,可以拦截event()函数并捕获QEvent::tooltip事件(例如,自定义显示工具提示的区域)。
默认情况下,此属性包含空字符串。
相关函数:
QString toolTip() const
void setToolTip(const QString &)
46.toolTipDuration : int
该属性定义了小部件的工具提示持续时间。
指定工具提示将显示多长时间(以毫秒为单位)。如果该值为-1(默认值),则根据工具提示的长度计算持续时间。
相关函数:
int toolTipDuration() const
void setToolTipDuration(int msec)
47.updatesEnabled : bool
该属性定义了是否启用更新。
启用更新的小控件接收绘画事件并具有系统背景;禁用的小控件则不会。这也意味着,如果禁用更新,则调用update()和reflect()无效。
默认情况下,此属性为true。
setUpdatesEnabled()通常用于在短时间内禁用更新,例如在较大的更改期间避免屏幕闪烁。在Qt中,小控件通常不会产生屏幕闪烁,但在X11上,当小控件被隐藏时,服务器可能会在它们被其他小控件替换之前擦除屏幕上的区域。禁用更新可以解决此问题。
例:
setUpdatesEnabled(false);
bigVisualChanges();
setUpdatesEnabled(true);
禁用小控件会隐式禁用其所有子部件。启用小控件将启用除顶级小控件或已明确禁用的小控件之外的所有子控件。重新启用更新隐式调用小控件上的update()。
相关函数:
bool updatesEnabled() const
void setUpdatesEnabled(bool enable)
48.visible : bool
该属性定义了小控件是否可见。
如果窗口之前的所有父控件都是可见的,则调用setVisible(true)或show()将小控件设置为可见状态。如果祖先不可见,则小控件在其所有祖先显示之前不会可见。如果它的大小或位置发生了变化,Qt保证小控件在显示之前会收到移动和调整大小的事件。如果小控件尚未调整大小,Qt将使用adjustSize()将小控件的大小调整为有用的默认值。
调用setVisible(false)或hide()显式隐藏小控件。一个显式隐藏的小控件永远不会变得可见,即使它的所有祖先都变得可见。
当小控件的可见性状态发生变化时,它会接收显示和隐藏事件。在隐藏和显示事件之间,不需要浪费CPU周期来准备或向用户显示信息。例如,视频应用程序可能只是停止生成新帧。
碰巧被屏幕上的其他窗口遮挡的小控件被认为是可见的。这同样适用于图标化窗口和存在于另一个虚拟桌面上的窗口(在支持此概念的平台上)。当窗口系统更改其映射状态时,小部件会接收自发的显示和隐藏事件,例如,当用户最小化窗口时的自发隐藏事件,以及当窗口再次恢复时的自发显示事件。
所以几乎不需要重新实现setVisible()函数。如果在显示小控件之前需要更改一些设置,则使用showEvent()。如果需要执行一些延迟初始化,请使用传递给event()函数的Polish事件。
相关函数:
bool isVisible() const
virtual void setVisible(bool visible)
49.whatsThis : QString
该属性定义了小控件的What’s This帮助文本。
默认情况下,此属性包含空字符串。
相关函数:
QString whatsThis() const
void setWhatsThis(const QString &)
50.[read-only] width : const int
该属性定义了小控件的宽度,不包括任何边框。
注意:不要使用此功能在多屏幕桌面上查找屏幕的宽度。
默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。
相关函数:
int width() const
51.windowFilePath : QString
该属性定义了与小控件关联的文件路径。
该属性仅对窗口有意义。它将文件路径与窗口相关联。如果设置了文件路径,但没有设置窗口标题,Qt会将窗口标题设置为指定路径的文件名,使用QFileInfo::fileName()获得。
如果在设置了窗口标题,则窗口标题将优先显示,而不是文件路径字符串。
此外,在macOS上,这还有一个额外的好处,即假设文件路径存在,它会为窗口设置代理图标。
如果未设置文件路径,则该属性包含空字符串。
默认情况下,该属性包含空字符串。
相关函数:
QString windowFilePath() const
void setWindowFilePath(const QString &filePath)
52.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)
53.windowIcon : QIcon
该属性定义了小部控件的图标。
该属性仅对窗口有意义。如果没有设置图标,则windowIcon()返回应用程序图标(QApplication::windowIcon)。
注意:在macOS上,窗口图标表示活动文档,除非还使用setWindowFilePath设置了文件路径,否则不会显示。
相关函数:
QIcon windowIcon() const
void setWindowIcon(const QIcon &icon)
54.windowModality : Qt::WindowModality
该属性定义了模态小控件阻止的窗口。
该属性仅对窗口有意义。模态小控件可防止其他窗口中的小部件获取输入。该属性的值控制小控件可见时阻止哪些窗口。在窗口可见时更改该属性没有效果;必须先隐藏小部件,然后再显示它。
默认情况下,此属性为Qt::NonModal。
相关函数:
Qt::WindowModality windowModality() const
void setWindowModality(Qt::WindowModality windowModality)
55.windowModified : bool
该属性定义了窗口中显示的文档是否有未保存的更改。
修改后的窗口是指其内容已更改但尚未保存到磁盘的窗口。该标志将根据平台的不同而产生不同的效果。在macOS上,关闭按钮将具有修改后的外观;在其他平台上,窗口标题将有一个“*”(星号)。
窗口标题必须包含一个“[]”占位符,指示“”应出现在何处。通常,它应该出现在文件名之后(例如,“document1.txt[*]-文本编辑器”)。如果窗口未被修改,则占位符将被删除。
注意:如果将小控件设置为修改,则其所有祖先也将被设置为修改。但是,如果在小部件上调用setWindowModified(false),则不会传播到其父级,因为父级的其他子级可能已被修改。
相关函数:
bool isWindowModified() const
void setWindowModified(bool)
56.windowOpacity : double
该属性定义了窗口的不透明度级别。
不透明度的有效范围为1.0(完全不透明)到0.0(完全透明)。
默认情况下,此属性的值为1.0。
此功能在支持Composite扩展的嵌入式Linux、macOS、Windows和X11平台上可用。
注意:在X11上,需要运行一个复合管理器,并且使用的窗口管理器需要支持X11特定的_NET_WM_WINDOW_OPACITY原子。
警告:将该属性从不透明更改为透明可能会引发需要处理的绘制事件,然后才能正确显示窗口。这主要影响QScreen::grabWindow()的使用。另外,半透明窗口的更新和调整速度明显慢于不透明窗口。
相关函数:
qreal windowOpacity() const
void setWindowOpacity(qreal level)
57.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)
57.[read-only] x : const int
该属性定义了小控件相对于其父级的x坐标,包括任何窗框。
默认情况下,此属性的值为0。
相关函数:
int x() const
58.[read-only] y : const int
该属性定义了小控件相对于其父级的y坐标,包括任何窗框。
默认情况下,此属性的值为0。
相关函数:
int y() const
五、Public函数
1.QWidget
[explicit] QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
构造函数,其中:
parent:指向父级
f:标志参数(可选项)
如parent为nullptr,则对象将成为顶级窗口。如父窗口是另一个窗口的控件,则该控件将成为父窗口内的子窗口。当其父级被释放时,该控件也会被释放。
标志参数f通常为0,但可以将其设置为自定义窗口的框架(此时父级必须为nullptr),f的值为各功能值经过或运算后的值。
Qt的X11版本可能无法提供样式标志的所有组合,但在Windows上,Qt可以设置任何标志。
2.~QWidget
[virtual] QWidget::~QWidget()
析构函数,首先释放此 Widget 的所有子项。如果此 Widget 是主 Widget,则应用程序将退出。
3.actionEvent
[virtual protected] void QWidget::actionEvent(QActionEvent *event)
每当更改窗口小控件的动作时,都会使用给定事件调用此事件处理程序。
其中:
event:给定的事件
六、需重写的Public函数
1. paintEvent
[virtual protected] void QWidget::paintEvent(QPaintEvent *event)
paintevent函数是在窗口或控件需要重绘时被调用的函数。它通常在窗口或控件第一次出现、移动、调整大小以及内容发生更改时重绘。在paintEvent函数中,可以使用Qpainter类来绘制所需的图形或文本。例如,可以使用drawText方法在窗口中绘制文本。
paintEvent函数的触发有以下几种情况:
在窗口控件第一次加载显示时
当重新调整窗口控件的大小时。
当窗口控件被其他窗口控件遮挡,然后又再次显示出来时
调用update或者repaint时。
其中:
event:传入的重绘事件
注意:通常,应该避免在paintEvent()中调用update()或repaint()。例如,对paintEvent()内的子级调用update()或repaint()会导致未定义的行为;子级可能不会获取重绘事件。
警告:如果使用的是没有Qt备份存储的自定义绘画引擎,则必须设置Qt::WA_PaintOnScreen。否则将不会调用QWidget::paintEngine()。
七、Public槽函数
1.close
[slot] bool QWidget::close()
关闭此控件。如果控件已关闭,则返回true;否则返回false。
首先,它向控件发送QCloseEvent。如果控件接受关闭事件,则该控件将被隐藏。如果它忽略该事件,则不会发生任何事情。QWidget::closeEvent()的默认实现接受关闭事件。
如果控件件具有Qt::WA_DeleteOnClose标志,则控件将被释放。无论控件是否可见,都会将关闭事件传递给小控件。
当设置了Qt::WA_QuitOnClose属性的最后一个可见主窗口(即没有父窗口的窗口)关闭时,发出QGuiApplication::lastWindowClosed()信号。默认情况下,为所有窗口控件件(瞬态窗口除外)设置该属性。
2.hide
[slot] void QWidget::hide()
隐藏控件。此函数相当于setVisible(false)。
注意:如果正在使用QDialog或其子类,并且在该函数之后调用show()函数,则对话框将显示在其原始位置。
3.lower
[slot] void QWidget::lower()
将Widget降低到父Widget堆栈的底部。在此调用之后,控件将在视觉上位于任何重叠的同级控件之后,并因此而被其遮盖。
八、信号
1. customContextMenuRequested
[signal] void QWidget::customContextMenuRequested(const QPoint &pos)
当控件的contextMenuPolicy为Qt::CustomContextMenu,并且用户已请求控件上的上下文菜单时,将发出此信号。位置pos是控件件接收的上下文菜单事件的位置。
通常在控件坐标中,但QAbstractScrollArea及其子类,它们将上下文菜单事件映射到viewport()的坐标。
2.windowIconChanged
[signal] void QWidget::windowIconChanged(const QIcon &icon)
当窗口的图标更改时,将发出此信号,并将新图标作为参数。
3. windowTitleChanged
[signal] void QWidget::windowTitleChanged(const QString &title)
当窗口的标题更改时,将发出此信号,并将新标题作为参数。
九、静态Public成员函数
1.createWindowContainer
[static] 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示例实现本身。例如,当进入具有选项卡焦点的基于QtQuick的窗口时,很可能进一步的选项卡按下将仅在QML应用程序内循环。此外,QWindow::requestActivate()是否实际提供窗口焦点取决于平台。
在基于QWidget的应用程序中使用多个窗口容器实例可能会极大地损害应用程序的整体性能。
2.find
[static] QWidget *QWidget::find(WId id)
返回窗口标识符/句柄id为的控件的指针。
窗口标识符类型取决于底层窗口系统,如果没有具有该标识符的控件,则返回nullptr。
3. keyboardGrabber
[static] QWidget *QWidget::keyboardGrabber()
返回当前正在获取键盘输入的控件。如果该应用程序中没有控件件当前正在获取键盘,则返回nullptr 。
十、Protected 函数
1.actionEvent
[virtual protected] void QWidget::actionEvent(QActionEvent *event)
每当控件的操作发生更改时,就会使用给定的事件,并调用该事件处理程序。
2.changeEvent
[virtual protected] 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
3.closeEvent
[virtual protected] void QWidget::closeEvent(QCloseEvent *event)
当 Qt 从窗口系统收到顶级窗口关闭请求时,将使用给定事件调用此事件处理程序。
默认情况下,接受事件并关闭 Widget。也可以重新实现此功能以更改 Widget 响应窗口关闭请求的方式。例如,可以通过对所有事件调用 ignore() 来防止窗口关闭。
主窗口应用程序通常使用此功能的重新实现来检查用户的工作是否已保存,并在关闭之前请求权限。
十一、需重写的Protected 函数
1.event
[override virtual protected] bool QWidget::event(QEvent *event)
重新实现: QObject::event(QEvent *e).
这是主事件处理程序。可以在子类中重新实现此函数。
按键和释放事件的处理方式与其他事件不同。event() 检查 Tab 和 Shift+Tab,并尝试适当地移动焦点。如果没有可将焦点移动到的控件(或者按键不是 Tab 或 Shift+Tab),则 event() 调用 keyPressEvent()。
鼠标和平板电脑的事件处理也稍微特殊一些:仅当启用控件时,event() 才会调用专门的处理程序,例如 mousePressEvent();否则,将丢弃该事件。
如果识别到事件,则此函数返回 true,否则返回 false。如果识别的事件被接受(参见 QEvent::accepted),则任何进一步的处理(例如事件传播到父 widget)都将停止。
2.initPainter
[override virtual protected] void QWidget::initPainter(QPainter *painter) const
将 painterpen、background 和 font 初始化为与给定 widget 的相同。在 QWidget 上打开Painter时,会自动调用此函数。
3.metric
[override virtual protected] int QWidget::metric(QPaintDevice::PaintDeviceMetric m) const
重新实现:QPaintDevice::metric(QPaintDevice:😛 aintDeviceMetric metric) const。
其中:
m :要获取的度量
十二、Protected槽函数
1.updateMicroFocus
[protected slot] void QWidget::updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll)
更新 widget 的焦点,并通知输入法 query 指定的状态已更改。
十三、宏
1.QWIDGETSIZE_MAX
定义 QWidget 对象的最大大小。控件允许的最大大小是 QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX),即 QSize (16777215,16777215)。
完善中