class QWidget#

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

Inheritance diagram of PySide6.QtWidgets.QWidget

Inherited by: QWizardPage, QToolBar, QTabWidget, QTabBar, QStatusBar, QSplitterHandle, QSplashScreen, QSizeGrip, QRubberBand, QRhiWidget, QProgressBar, QMenuBar, QMenu, QMdiSubWindow, QMainWindow, QLineEdit, QKeySequenceEdit, QGroupBox, QFrame, QToolBox, QStackedWidget, QSplitter, QLabel, QLCDNumber, QAbstractScrollArea, QTextEdit, QTextBrowser, QScrollArea, QPlainTextEdit, QMdiArea, QGraphicsView, QAbstractItemView, QTreeView, QTreeWidget, QHelpContentWidget, QTableView, QTableWidget, QListView, QUndoView, QListWidget, QHelpIndexWidget, QHeaderView, QColumnView, QPdfView, QFocusFrame, QDockWidget, QDialogButtonBox, QDialog, QWizard, QProgressDialog, QMessageBox, QInputDialog, QFontDialog, QErrorMessage, QColorDialog, QPrintPreviewDialog, QPageSetupDialog, QAbstractPrintDialog, QPrintDialog, QComboBox, QFontComboBox, QCalendarWidget, QAbstractSpinBox, QSpinBox, QDoubleSpinBox, QDateTimeEdit, QTimeEdit, QDateEdit, QAbstractSlider, QSlider, QScrollBar, QDial, QAbstractButton, QToolButton, QRadioButton, QPushButton, QCommandLinkButton, QCheckBox, QSvgWidget, QQuickWidget, QAbstract3DGraph, Q3DSurface, Q3DScatter, Q3DBars, QPrintPreviewWidget, QPdfPageSelector, QOpenGLWidget, QVideoWidget, QHelpSearchResultWidget, QHelpSearchQueryWidget, QHelpFilterSettingsWidget, QDesignerWidgetBoxInterface, QDesignerPropertyEditorInterface, QDesignerObjectInspectorInterface, QDesignerFormWindowInterface, QDesignerActionEditorInterface, QFileDialog, QWebEngineView, QChartView

摘要#

属性#

方法#

虚函数#

槽(Slots)#

信号#

静态函数#

注意

本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告诉我们

详细描述#

小部件是用户界面的原子:它从窗口系统接收鼠标、键盘和其他事件,并在屏幕上绘制自身的表示。每个小部件都是矩形的,并按 Z 轴顺序排序。一个小部件被其父级和前方的小部件剪切。

未嵌入父小部件的小部件称为窗口。通常,窗口有一个框架和标题栏,尽管也可以使用合适的窗口标志创建不带此类装饰的窗口。在 Qt 中,QMainWindowQDialog 的各种子类是最常见的窗口类型。

每个小部件的构造函数接受一个或两个标准参数

  1. QWidget *parent = nullptr 是新小部件的父级。如果它是 None(默认值),则新小部件将是一个窗口。如果不是,它将是 parent 的子级,并由 parent 的几何形状限制(除非您指定 Qt::Window 作为窗口标志)。

  2. Qt::WindowFlags f = { }(如果可用)设置窗口标志;默认设置适用于大多数小部件,但要获取,例如,没有窗口系统框架的窗口,您必须使用特殊的标志。

QWidget 具有众多成员函数,但其中一些函数的直接功能较少;例如,QWidget 拥有字体属性,但它从不自行使用这个属性。存在许多提供实际功能的子类,例如 QLabelQPushButtonQListWidgetQTabWidget

顶级和子小部件#

没有父小部件的小部件始终是独立窗口(顶级小部件)。对于这些小部件,使用 setWindowTitle()setWindowIcon() 来分别设置标题栏和图标。

非窗口小部件是子小部件,显示在其父小部件内。Qt 中的大多数小部件主要用于作为子小部件使用。例如,可以将按钮显示为顶级窗口,但大多数人更喜欢将按钮放在其他小部件中,例如 QDialog

../../_images/parent-child-widgets.png

上面的图示显示了一个 QGroupBox 小部件被用于在 QGridLayout 提供的布局中包含各种子小部件。标记了 QLabel 子小部件的外边缘以表示它们的完整大小。

如果您想使用 QWidget 来包含子小部件,通常您希望向父 QWidget 添加一个布局。更多详细信息,请参阅 布局管理

复合小部件#

当一个小部件用作容器来分组多个子小部件时,它被称为复合小部件。这些可以由具有所需视觉属性的小部件构造而成 - 例如,通过 QFrame - 并向其中添加子小部件,通常由布局进行管理。

通过继承标准小部件(如 QWidgetQFrame)并在子类构造函数中添加必要的布局和子小部件,也可以创建复合小部件。Qt提供的许多示例都使用这种方法,这在Qt 小部件教程 中也有介绍。

自定义小部件和绘图#

由于 QWidget 是 QPaintDevice 的子类,可以使用子类来显示由 QPainter 类实例执行的系列绘图操作组合成的自定义内容。这种方法与 图形视图框架 使用的画布样式方法形成对比,在画布样式方法中,项目是通过应用程序添加到场景中并由框架本身渲染的。

每个小部件都通过其 paintEvent() 函数执行所有绘图操作。每当小部件需要重新绘制时,无论是由于某些外部变化还是由应用程序请求,都会调用该函数。

模拟时钟示例 展示了一个简单小部件如何处理绘图事件。

大小提示和大小策略#

实现新的小部件时,通常很有用重新实现 sizeHint() 来为小部件提供合理的默认大小,并使用 setSizePolicy() 设置正确的大小策略。

默认情况下,不提供大小提示的复合小部件的大小将根据其子小部件的空间需求进行调整。

大小策略可以让您为布局管理系统提供良好的默认行为,以便其他小部件可以轻松地包含和管理您的小部件。默认的大小策略表示大小提示表示小部件的首选大小,这对于许多小部件来说通常已经足够。

注意

顶层小部件的大小限制在桌面高度的2/3和宽度的2/3。如果这些限制不足,您可以手动resize() 小部件。

事件#

小部件响应由用户操作引起的典型事件。Qt通过调用具有包含每个事件信息的QEvent子类实例的事件处理函数来向小部件传递事件。

如果您的只包含子小部件,那么您可能不需要实现任何事件处理器。如果要在子小部件中检测鼠标点击,请在该小部件的mousePressEvent() 中调用子部件的 underMouse() 函数。

Scribble示例实现了一组更广泛的命令,用于处理鼠标移动、按钮点击和窗口调整大小。

您需要提供自己的小部件的行为和内容,但以下是针对QWidget的相关事件的简要概述,从最常见的事件开始

  • paintEvent()在每个小部件需要重新绘制时被调用。每个显示自定义内容的小部件都必须实现它。使用QPainter进行绘制只能发生在paintEvent()或由paintEvent()调用的函数中。

  • resizeEvent()在小部件被调整大小时被调用。

  • mousePressEvent()在鼠标按钮在小部件内被按下或者小部件通过grabMouse()捕获鼠标时被调用。按下而不释放鼠标相当于调用grabMouse()

  • mouseReleaseEvent()在鼠标按钮释放时被调用。当小部件收到相应的鼠标点击事件时,它会接收鼠标释放事件。这意味着如果用户在小部件内部按下鼠标,然后在释放鼠标按钮之前将其拖动到其他地方,收到释放事件的是小部件。有一个例外:如果在按住鼠标按钮时出现弹出菜单,此弹出菜单立即窃取鼠标事件。

  • mouseDoubleClickEvent()当用户在小部件中双击时被调用。如果用户双击,小部件会收到鼠标按下事件、鼠标释放事件(鼠标点击事件)、第二次鼠标按下事件、该事件以及最终第二次鼠标释放事件。(如果鼠标在此操作中不保持稳定,可能会收到一些鼠标移动事件。)在第二次点击到来之前,无法区分单击和双击。(这就是为什么大多数GUI书籍建议将双击视为单单击的扩展,而不是激发不同的动作的原因之一。)

需要接受键盘输入的控件需要重新实现更多事件处理程序

  • keyPressEvent() 会在按下键时被调用,并在键被按下足够长的时间以自动重复时再次被调用。Tab键和Shift+Tab键只有在它们没有被焦点转换机制使用时才会传递给小部件。要强制这些键由您的小部件处理,您必须重新实现 event()

  • focusInEvent() 会在小部件获得键盘焦点时被调用(假设您已经调用了 setFocusPolicy())。表现良好的小部件会以明确而低调的方式表明它们拥有键盘焦点。

  • focusOutEvent() 会在小部件失去键盘焦点时被调用。

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

  • mouseMoveEvent() 会在鼠标按钮按下时移动鼠标时被调用。这在拖放操作期间非常有用。如果您调用 setMouseTracking(true),即使在没有按钮按下时也会接收到鼠标移动事件。(有关更多信息,请参阅拖放指南。)

  • keyReleaseEvent() 会在释放键时以及键被按下(如果键是自动重复的)时被调用。在这种情况下,每次重复都会为小部件生成一对键释放和键点击事件。Tab键和Shift+Tab键只有在它们没有被焦点转换机制使用时才会传递给小部件。要强制这些键由您的组件处理,您必须重新实现 event()

  • wheelEvent() 会在用户在具有焦点的组件上旋转鼠标滚轮时被调用。

  • enterEvent() 会在鼠标进入小部件屏幕空间时被调用。(这不包括小部件子部件拥有的屏幕空间。)

  • leaveEvent() 会在鼠标离开小部件屏幕空间时被调用。如果鼠标进入子小部件,则不会导致 leaveEvent()

  • moveEvent() 会在小部件相对于其父小部件移动时被调用。

  • closeEvent() 在用户关闭小部件时(或者调用 close() 时)被调用。

在 QEvent::Type 的文档中描述了一些相对不为人知的事件。要处理这些事件,您需要直接重新实现 event()

event() 的默认实现处理 Tab 和 Shift+Tab(用于移动键盘焦点),并将大部分其他事件传递给上面的某些更专业的事件处理器。

事件及其传递机制在《事件系统》中进行了介绍。

函数和属性组#

上下文

函数和属性

窗口函数

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

顶级窗口

windowModified , windowTitle , windowIcon , isActiveWindow , activateWindow() , minimized , showMinimized() , maximized , showMaximized() , fullScreen , showFullScreen() , showNormal()

窗口内容

update() , repaint() , scroll()

几何形状

pos , x() , y() , rect , size , width() , height() , move() , resize() , sizePolicy , sizeHint() , minimumSizeHint() , updateGeometry() , layout() , frameGeometry , geometry , childrenRect , childrenRegion , adjustSize() , mapFromGlobal() , mapToGlobal() , mapFromParent() , mapToParent() , maximumSize , minimumSize , sizeIncrement , baseSize , setFixedSize()

模式

visible visible , isVisibleTo() , enabled enabled , isEnabledTo() , modal modal , isWindow() , mouseTracking mouseTracking , updatesEnabled , visibleRegion() .

外观和感觉

style() , setStyle() , styleSheet , cursor , font , palette , backgroundRole() , setBackgroundRole() , fontInfo() , fontMetrics() .

键盘焦点功能

focus , focusPolicy , setFocus() , clearFocus() , setTabOrder() , setFocusProxy() , focusNextChild() , focusPreviousChild() .

鼠标和键盘捕获

grabMouse()releaseMouse()grabKeyboard()releaseKeyboard()mouseGrabber()keyboardGrabber()

事件处理程序

event()mousePressEvent()mouseReleaseEvent()mouseDoubleClickEvent()mouseMoveEvent()keyPressEvent()keyReleaseEvent()focusInEvent()focusOutEvent()wheelEvent()enterEvent()leaveEvent()paintEvent()moveEvent()resizeEvent()closeEvent()dragEnterEvent()dragMoveEvent()dragLeaveEvent()dropEvent(),childEvent(),showEvent()hideEvent(),customEvent()。changeEvent()

系统函数

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

上下文菜单

contextMenuPolicy , contextMenuEvent() , customContextMenuRequested() , actions()

交互式帮助

setToolTip() , setWhatsThis()

小部件样式表#

除了每个平台的标准小部件样式外,还可以根据样式表中的规则对小部件进行样式化。此功能允许您自定义特定小部件的外观,以便用户了解其用途。例如,可以将按钮以特定方式样式化,以指示它执行破坏性操作。

Qt 样式表 文档中对小部件样式表的用法进行了更详细的描述。

透明度和双缓冲#

QWidget 自动双缓冲其绘制,因此不需要在 paintEvent() 中编写双缓冲代码以避免闪烁。

只要未设置 Qt::WA_PaintOnScreen,父小部件的内容就会默认传播到其每个子小部件。自定义小部件可以编写以利用此功能,通过更新不规则区域(以创建非矩形子小部件)或使用具有不足全alpha组件的颜色进行绘制。以下图表显示了如何调整自定义小部件的属性和属性以实现不同的效果。

../../_images/propagation-custom.png

在上图中,一个半透明矩形子小部件(有区域被移除)被构造并添加到父小部件中(一个显示位图的 QLabel)。然后设置不同的属性和widget属性以获得不同的效果。

  • 左侧小部件没有设置任何附加属性或小部件属性。默认状态适用于大多数具有透明度、不规则形状或未用不透明画笔覆盖整个区域的自定义小部件。

  • 中心小部件设置了autoFillBackground属性。此属性用于依赖于小部件提供默认背景的自定义小部件,且这些小部件未用不透明画笔覆盖其整个区域。

  • 右侧小部件设置了Qt::WA_OpaquePaintEvent小部件属性。这表示小部件将以不透明颜色覆盖其整个区域。小部件的区域 initially 将未初始化,在图中用表示的红色对角网格图案表示,该图案穿透已覆盖的区域。

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

为了快速更新经常用不透明内容覆盖整个区域的自定义小部件,例如视频流小部件,最好设置小部件的Qt::WA_OpaquePaintEvent属性,避免与重绘小部件背景相关的任何不必要的开销。

如果小部件同时设置了Qt::WA_OpaquePaintEvent小部件属性以及autoFillBackground属性,Qt::WA_OpaquePaintEvent属性将具有优先权。根据您的需求,您应该选择其中之一。

父小部件的内容也被传播到标准Qt小部件。如果父小部件以非标准方式装饰,可能会导致一些意外结果,如图表中所示。

../../_images/propagation-standard.png

在不使用类继承的情况下定制标准Qt小部件的绘图行为的作用域比自定义小部件略小。通常,可以设置其autoFillBackground属性,以达到标准小部件所需的外观。

创建半透明窗口#

您可以在支持组合的窗口系统上创建具有半透明区域的窗口。

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

平台说明

  • X11:此功能依赖于使用支持ARGB视觉和组合窗口管理器的X服务器。

  • Windows:小部件需要设置Qt::FramelessWindowHint窗口标志才能使透明度生效。

  • macOS:小部件需要设置Qt::FramelessWindowHint窗口标志才能使透明度生效。

原生日志与外部日志#

外部小部件对于窗口系统来说是未知的。它们没有与小部件相关联的本地窗口句柄。此功能显著加快了小部件的绘制、调整大小和去除闪烁。

如果您需要具有原生窗口的旧行为,请选择以下选项之一

  1. 在您的环境中使用 QT_USE_NATIVE_WINDOWS=1

  2. 在您的应用程序上设置 Qt::AA_NativeWindows 属性。所有小部件将变为原生小部件。

  3. 在小部件上设置 Qt::WA_NativeWindow 属性:该小部件自身及其所有祖先将变为原生(除非设置了 Qt::WA_DontCreateNativeAncestors)。

  4. 调用 winId 以强制原生窗口(这暗示了 3)。

  5. 将 Qt::WA_PaintOnScreen 属性设置为强制原生窗口(这暗示了 3)。

class RenderFlag#

(继承自 enum.Flag) 此枚举描述了在调用 render() 时如何渲染小部件。

常量

描述

QWidget.DrawWindowBackground

如果您启用此选项,即使未设置 autoFillBackground,小部件的背景也会渲染到目标中。默认情况下,此选项已启用。

QWidget.DrawChildren

如果您启用此选项,小部件的子项将以递归方式渲染到目标中。默认情况下,此选项已启用。

QWidget.IgnoreMask

如果您启用此选项,在渲染到目标时将忽略小部件的 mask()。默认情况下,此选项已禁用。

注意

当使用 from __feature__ import true_property 时,可以直接使用属性;否则使用访问器函数。

property acceptDropsᅟ: bool#

此属性指示是否为此小部件启用了拖放事件。

将此属性设置为 true 会通知系统此小部件 可能 能够接受拖放事件。

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

注意

不要在拖放事件处理程序中修改此属性。

默认情况下,此属性为 false

参阅

访问函数
property accessibleDescriptionᅟ: str#

此属性包含小部件的描述,该描述由辅助技术查看。

组件的可访问描述应传达组件的功能。虽然accessibleName 应该是一个简短简练的字符串(例如 保存),但描述应提供更多上下文,例如 保存当前文档

此属性必须进行本地化。

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

访问函数
属性 accessibleName: str#

此属性存储辅助技术看到的组件名称。

这是辅助技术(如屏幕阅读器)宣布此组件的主要名称。对于大多数组件,设置此属性不是必需的。例如,对于QPushButton,将使用按钮的文本。

当组件不提供任何文本时,设置此属性非常重要。例如,仅包含图标的按钮需要设置此属性才能与屏幕阅读器一起工作。名称应该是简短且与组件传达的视觉信息等效的。

此属性必须进行本地化。

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

访问函数
属性 autoFillBackground: bool#

此属性表示组件背景是否自动填充。

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

此外,除非设置了 WA_OpaquePaintEvent 或 WA_NoSystemBackground 特性,否则窗口总是填充 QPalette::Window。

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

注意

谨慎与Qt 样式表 一起使用此属性。当组件有包含有效背景或边框图像的样式表时,此属性自动禁用。

默认情况下,此属性为 false

参阅

透明度双缓冲

访问函数
属性 baseSize: QSize#

该属性保持小部件的基本尺寸。

基本尺寸用于计算如果小部件定义了 sizeIncrement() 的合适小部件尺寸。

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

访问函数
属性 childrenRect: QRect#

该属性保持小部件子项的边界矩形。

隐藏的子项不包括在内。

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

访问函数
属性 childrenRegion: QRegion#

该属性保持小部件子项所占用区域的组合。

隐藏的子项不包括在内。

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

访问函数
属性 contextMenuPolicy: Qt.ContextMenuPolicy#

该属性保持小部件显示上下文菜单的方式。

此属性的默认值是 Qt::DefaultContextMenu,这意味着会调用 contextMenuEvent() 处理器。其他值包括 Qt::NoContextMenu,Qt::PreventContextMenu,Qt::ActionsContextMenu,和 Qt::CustomContextMenu。使用 Qt::CustomContextMenu,会发出 customContextMenuRequested() 信号。

访问函数
属性 cursor: QCursor#

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

此属性保存该小部件的鼠标指针形状。

当鼠标指针悬停在該小部件上时,将假设此形状。请参阅预定义的光标对象列表,了解各种有用的形状。

编辑小部件可能会使用I形光标。

setCursor(Qt.IBeamCursor)

如果没有设置光标,或者调用unsetCursor()后,将使用父光标。

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

一些基础窗口实现会在光标离开小部件时重置光标,即使鼠标已捕获。如果希望所有小部件(包括窗口外)都具有光标,请考虑使用QGuiApplication::setOverrideCursor()。

访问函数
属性 enabled: bool#

此属性保存小部件是否启用的状态。

通常,启用的小部件能处理键盘和鼠标事件;禁用的小部件则不能。QAbstractButton 类是一个例外。

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

禁用小部件会隐式禁用其所有子组件。启用时会启用所有子组件,除非它们被显式禁用。如果父组件仍然禁用,则无法显式启用不是窗口的子组件。

默认情况下,此属性为 true。

访问函数
属性 focus: bool#

此属性保存此小部件(或其焦点代理)是否具有键盘输入焦点。

默认情况下,此属性为 false

注意

获取小部件此属性的值相当于检查 focusWidget() 是否引用了该小部件。

访问函数
属性 focusPolicy: Qt.FocusPolicy#

此属性表示小部件如何接受键盘焦点。

如果小部件通过制表符接受键盘焦点,则策略是 Qt::TabFocus;如果通过单击接受焦点,则是 Qt::ClickFocus;如果接受两者,则是 Qt::StrongFocus;如果根本不接受焦点,则是 Qt::NoFocus(默认)。

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

如果小部件有焦点代理,则焦点策略将传播到它。

访问函数
属性 font: QFont#

此属性表示当前为小部件设置的字体。

此属性描述小部件请求的字体。字体被用于小部件样式在渲染标准组件时,也是确保自定义小部件与平台本地外观和感觉保持一致的手段。通常,不同的平台或不同的样式为应用程序定义不同的字体。

当您将新字体分配给小部件时,此字体属性与默认字体合并形成小部件的最终字体。您可以通过调用 fontInfo() 来获取小部件最终字体的副本。最终字体也用于初始化 QPainter 的字体。

默认值取决于系统环境。 QApplication 维护一个系统/主题字体,用于所有小部件的默认字体。某些类型的小部件也可能有特定的字体默认值。您也可以通过传递自定义字体和小部件的名称到 setFont() 来自己定义小部件的默认字体。最后,字体将与 Qt 的字体数据库匹配以找到最佳匹配。

QWidget 会将显式的字体属性从父元素传播到子元素。如果您更改某个特定字体属性并将其分配给小部件,该属性将传播到所有子小部件,覆盖该属性的任何系统默认值。请注意,字体默认情况下不支持传播到窗口(除非启用 Qt::WA_WindowPropagation 属性)。

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

当前样式用于渲染所有标准 Qt 小部件的内容,可以自由选择使用小部件字体,在某些情况下,也可以忽略它(部分或全部)。特别是像 GTK 样式、Mac 样式和 Windows Vista 样式这样的特定样式会对小部件字体进行特殊修改以匹配平台的原生外观和感觉。因此,将属性分配给小部件的字体并不保证会改变小部件的外观。相反,您可以选择应用一个 styleSheet

注意

如果在同一个小部件上使用了 setFont() 和 Qt 样式表,当设置冲突时,样式表将具有优先权。

访问函数
属性 frameGeometryᅟ: QRect#

该属性持有相对于其父元素的控件几何形状,包括任何窗口框架。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

访问函数
属性 frameSize: QSize#

该属性包含带有窗口边框的小部件的大小。

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

访问函数
属性 fullScreen: bool#

该属性包含小部件是否以全屏模式显示。

在全屏模式下,小部件占用整个屏幕区域,不显示窗口装饰项,例如标题栏。

默认情况下,此属性为 false

参阅

windowState() minimized maximized

访问函数
属性 geometry: QRect#

该属性包含小部件相对于其父元素以及不包括窗口边框的几何形状。

当更改几何形状时,如果小部件是可见的,它将立即接收到一个移动事件(moveEvent())和/或一个调整大小事件(resizeEvent())。如果小部件当前不可见,则可以在它显示之前保证接收到适当的事件。

如果尺寸组件超出由 minimumSize()maximumSize() 定义的范围内,则对其进行调整。

注意

resizeEvent()moveEvent() 中调用 setGeometry() 可能会导致无限递归。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

访问函数
属性height: int#

此属性存储了不包括任何窗口框架的小部件的高。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

参阅

geometry width size

访问函数

属性inputMethodHints: Qt.InputMethodHint 的组合#

此属性存储了小部件拥有的特定输入方法的提示。

这对于输入小部件相关的内容。它被输入法用来检索提示,以便输入法应该如何操作。例如,如果设置了 Qt::ImhFormattedNumbersOnly 标志,输入法可能会更改其视觉组件以反映只能输入数字。

注意

某些小部件需要某些标志才能正常工作。要设置标志,请使用 w->setInputMethodHints(w->inputMethodHints()|f) 替代 w->setInputMethodHints(f)

注意

标志仅是提示,所以具体的输入法实现可以自由忽略它们。如果您想确保输入特定类型的字符,您还应在小部件上设置 QValidator。

默认值是 Qt::ImhNone。

访问函数
属性isActiveWindow: bool#

此属性存储了此小部件的窗口是否是活动窗口。

活动窗口是包含具有键盘焦点的小部件的窗口(即使在没有小部件或有小部件不接受键盘焦点的情况下,该窗口仍可能具有焦点)。

当弹出窗口可见时,此属性对活动窗口和弹出窗口都为 true

默认情况下,此属性为 false

访问函数
属性layoutDirection Qt.LayoutDirection#

此属性用于存储该小部件的布局方向。

注意

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

默认情况下,此属性设置为Qt::LeftToRight。

当在widget上设置布局方向时,它将传播到widget的子控件,但对于是window的子控件或已显式调用setLayoutDirection()的子控件不起作用。另外,在调用父控件的setLayoutDirection()后添加的子控件不会继承父控件的布局方向。

参阅

layoutDirection

访问函数
属性locale QLocale#

此属性存储小部件的locale。

除非已设置特殊的locale,否则此locale将由父控件或(如果是顶级widget),默认locale。

如果小部件显示日期或数字,这些应使用小部件的locale进行格式化。

参阅

setDefault()

访问函数
属性maximizedbool#

此属性存储此widget是否已最大化。

该属性仅对窗口相关。

注意

由于一些窗口系统的限制,这并不总是报告预期的结果(例如,如果用户通过X11窗口管理器最大化窗口,Qt无法从其他任何调整大小时区分出来)。这预计将在窗口管理器协议发展过程中得到改善。

默认情况下,此属性为 false

访问函数
属性maximumHeightint#

此属性用于保存小部件的最大高度(像素为单位)。

此属性与 maximumSize 属性保持一致。

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

注意

QWIDGETSIZE_MAX 宏的定义限制了小部件的最大尺寸。

访问函数
属性maximumSizeᅟ: QSize#

此属性用于保存小部件的最大尺寸(像素为单位)。

小部件的尺寸不能被调整到大于最大小部件尺寸的大小。

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

注意

QWIDGETSIZE_MAX 宏的定义限制了小部件的最大尺寸。

访问函数
属性maximumWidthᅟ: int#

此属性用于保存小部件的最大宽度(像素为单位)。

此属性与 maximumSize 属性保持一致。

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

注意

QWIDGETSIZE_MAX 宏的定义限制了小部件的最大尺寸。

访问函数
属性minimizedᅟ: bool#

此属性用于保存此小部件是否已最小化(图标化)。

该属性仅对窗口相关。

默认情况下,此属性为 false

参阅

showMinimized() visible show() hide() showNormal() maximized

访问函数
属性minimumHeight int#

此属性以像素为单位保存小部件的最小高度。

此属性对应于由 minimumSize 属性持有的高度。

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

访问函数
属性minimumSizeQSize#

此属性保存小部件的最小尺寸。

小部件的尺寸不能缩小到小于最小小部件尺寸。如果当前尺寸较小,则将小部件的尺寸强制设置为最小尺寸。

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

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

访问函数
属性minimumSizeHintQSize#

此属性保留小部件的建议最小尺寸。

如果此属性的值为无效大小,则不推荐最小大小。

如果没有此小部件的布局,minimumSizeHint() 的默认实现会返回一个无效大小,否则返回布局的最小大小。大多数内置控件重新实现了 minimumSizeHint()。

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

访问函数
属性minimumWidth: int#

此属性包含小部件的最小宽度(以像素为单位)。

此属性对应于 minimumSize 属性中的宽度。

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

访问函数
属性modal: bool#

此属性表示小部件是否为模态小部件。

此属性仅在窗口中有意义。模态小部件阻止所有其他窗口中的小部件接收任何输入。

默认情况下,此属性为 false

访问函数
属性mouseTracking: bool#

此属性表示是否已为小部件启用鼠标跟踪。

如果禁用了鼠标跟踪(默认值),则只有当鼠标移动时至少有一个鼠标按钮被按下时,小部件才会接收到鼠标移动事件。

如果启用了鼠标跟踪,小部件在不需要按按钮的情况下也会接收到鼠标移动事件。

访问函数
属性 normalGeometry: QRect#

此属性包含将作为常规(非最大化或全屏)顶级小部件显示时的 widget 几何形状。

如果 widget 已经处于此状态,则正常几何形状将反映 widget 当前的 geometry()

对于子 widget,此属性始终包含空矩形。

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

访问函数
属性 palette: QPalette#

此属性包含 widget 的调色板。

此属性描述了 widget 的调色板。调色板在 widget 的样式渲染标准组件时使用,并为自定义 widget 与本地平台的外观和感觉保持一致提供了一种手段。不同平台或不同样式通常具有不同的调色板。

当您将新调色板分配给 widget 时,此调色板的颜色角色将与 widget 的默认调色板合并,以形成 widget 的最终调色板。widget 背景角色的调色板条目用于填充 widget 的背景(请参阅 autoFillBackground ),并且前景角色初始化 QPainter 的笔。

默认设置取决于系统环境。 QApplication 维护系统/主题调色板,该调色板作为所有 widget 的默认值。对于某些类型的 widget,还可能有特殊的默认调色板(例如,在 Windows Vista 上,所有从 QMenuBar 继承的类都有一个特殊的默认调色板)。您也可以通过传递自定义调色板和 widget 的名称到 setPalette() 定义 widget 的默认调色板。最后,样式始终有在分配时对调色板进行精美的选项(请参阅 polish() )。

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

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

当前样式,用于渲染所有标准 Qt 小部件的内容,可以自由地从小部件调色板选择颜色和画笔,或者在某些情况下忽略调色板(部分或全部)。特别是,像 GTK 样式、Mac 样式和 Windows Vista 样式这样的样式依赖于第三方 API 来渲染小部件的内容,这些样式通常不遵循调色板。因此,将角色分配给小部件的调色板不保证改变小部件的外观。相反,你可以选择应用 样式表

注意

请勿与 Qt 样式表 一起使用此函数。当使用样式表时,可以使用“color”、“background-color”、“selection-color”、“selection-background-color”和“alternate-background-color”等属性来自定义小部件的调色板。

访问函数
属性QPoint#

此属性包含小部件在其父小部件内的位置。

如果小部件是一个窗口,该位置是桌面上的小部件位置,包括其框架。

在更改位置时,如果小部件是可见的,它将立即收到移动事件( moveEvent())。如果小部件当前不可见,它保证在显示之前收到事件。

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

注意

moveEvent() 中调用 move() 或 setGeometry()可能会导致无限递归。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

注意

并不是所有的窗口管理器都支持设置或查询顶级窗口位置。在这样一个系统上,程序移动窗口可能没有任何效果,且可能返回当前位置的虚假值,例如 QPoint(0, 0)

访问函数
属性 rect: QRect#

此属性保存小部件的内部几何形状,不包括任何窗口框架。

rect属性等于QRect(0, 0, width() , height() )。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

参阅

size

访问函数
属性 size: QSize#

此属性保存小部件的大小,不包括任何窗口框架。

如果在小部件正在调整大小时它变得可见,它将立即收到一个resize事件(resizeEvent())。如果小部件当前不可见,则保证在它显示前接收事件。

如果它位于minimumSize()maximumSize()定义的范围内,则将调整大小。

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

注意

resizeEvent()内部调用resize()或setGeometry()可能会导致无限递归。

注意

将大小设置为QSize(0, 0)将导致小部件未显示在屏幕上。这也适用于窗口。

访问函数
属性 sizeHint: QSize#

此属性保存组件的建议大小。

如果此属性的值为无效大小,则不推荐任何大小。

sizeHint()的默认实现如果没有布局,则返回无效大小,否则返回布局的首选大小。

访问函数
propertysizeIncrement:QSize#

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

此属性保存组件的大小增量。

当用户调整窗口大小时,大小将以sizeIncrement()为步长移动。width() 像素水平移动,height() 像素垂直移动,以baseSize() 为基准。首选组件大小为非负整数j

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

请注意,虽然您可以设置所有组件的大小增量,但它仅影响窗口。

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

注意

在Windows下,大小增量没有效果,并且可能在X11窗口管理器中被忽略。

访问函数
propertysizePolicy:QSizePolicy#

此属性保存组件的默认布局行为。

如果有QLayout管理此组件的子组件,则使用该布局指定的尺寸策略。如果没有这样的QLayout,则使用此函数的结果。

默认策略是“首选/首选”,这意味着小部件可以自由调整大小,但倾向于采用sizeHint() 返回的大小。按钮式小部件将大小策略设置为指定它们可以水平拉伸,但垂直尺寸固定。这同样适用于编辑框控件(如QLineEditQSpinBox 或可编辑的QComboBox )和其他水平定位的小部件(如QProgressBar )。QToolButton 通常为正方形,因此它们允许两个方向的扩展。支持不同方向的小部件(如QSliderQScrollBar 或 QHeader )仅指定相应方向的拉伸。可以提供滚动条的小部件(通常是QScrollArea 的子类)往往指定它们可以使用额外的空间,并且可以应对小于 sizeHint() 的情况。

访问函数
property statusTipᅟ: str#

此属性存储小部件的状态提示。

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

访问函数
property styleSheetᅟ: str#

此属性存储小部件的样式表。

样式表包含对控件样式的自定义描述,详情请参阅Qt 样式表文档。

自Qt 4.5以来,Qt样式表完全支持macOS。

注意

Qt样式表目前不支持自定义 `QStyle` 子类。我们计划在未来的某个版本中解决此问题。

访问函数
属性 tabletTracking: bool#

此属性表示是否为控件启用平板电脑跟踪。

如果禁用平板电脑跟踪(默认),则控件仅在笔触平板电脑或至少有一个笔触按钮被按下且笔触正在移动时接收平板电脑移动事件。

如果启用平板电脑跟踪,控件即使在悬浮靠近之时也会接收平板电脑移动事件。这在监视位置以及如旋转和倾斜等辅助属性,以及提供UI反馈时非常有用。

参阅

tabletEvent()

访问函数
属性 toolTip: str#

此属性包含了控件的工具提示。

请注意,默认情况下,只有是活动窗口子类的控件的工具提示才会显示。您可以通过在`window`上设置属性 Qt::WA_AlwaysShowToolTips 来更改此行为,而不是在具有工具提示的控件上设置。

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

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

访问函数
属性 toolTipDuration: int#

此属性包含了控件的工具提示持续时间。

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

参阅

toolTip

访问函数
属性 updatesEnabled: bool#

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

该属性表示是否启用更新。

启用的更新控件会接收绘制事件并有一个系统背景;禁用的控件则不会。这也意味着,如果禁用了更新,调用 update()repaint() 没有任何效果。

默认情况下,此属性为 true。

通常使用 setUpdatesEnabled() 来禁用更新以避免屏幕闪烁,例如在执行大范围更改时。在 Qt 中,控件通常不会产生屏幕闪烁,但在 X11 中,当控件被隐藏而其他控件尚未替换它们时,服务器可能会清除屏幕上的区域。禁用更新可以解决这个问题。

示例

setUpdatesEnabled(False)
bigVisualChanges()
setUpdatesEnabled(True)

禁用控件会隐式地禁用其所有子控件。启用控件会启用所有子控件(除了顶层控件或已被显式禁用的控件)。重新启用更新会隐式地调用 update() 用于该控件。

参阅

paintEvent()

访问函数
属性 visible: bool#

该属性表示该控件是否可见。

调用 setVisible(true) 或 show() 将控件设置为可见状态,如果控件的所有父控件直到窗口都是可见的。如果一个祖先不可见,控件不会变得可见,直到所有祖先都显示出来。如果控件的大小或位置已更改,Qt 保证控件会在显示前获得移动和调整大小事件。如果控件尚未调整大小,Qt 将使用 adjustSize() 将控件的大小调整为有用的默认值。

调用 setVisible(false) 或 hide() 显式隐藏控件。一个显式隐藏的控件永远不会变得可见,即使所有祖先都变得可见,除非你显示它。

当控件的可见状态改变时,控件会接收到显示和隐藏事件。在隐藏和显示事件之间,不需要浪费 CPU 循环来准备或向用户显示信息。例如,一个视频应用可能只是简单地停止生成新帧。

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

很少需要重新实现 setVisible() 函数。如果需要在显示小部件之前更改一些设置,请使用 showEvent() 代替。如果需要执行一些延时初始化,请注意传递给 event() 函数的事件。

访问函数
property whatsThisᅟ: str#

此属性包含小部件的“这是什么?”帮助文本。

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

访问函数
property widthᅟ: int#

此属性包含小部件的宽度(不包括任何窗口框架)。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

注意

请不要使用此函数来找到多屏桌面上的屏幕宽度。请参阅 QScreen 获取详细信息。

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

参阅

geometry height size

访问函数

property windowFilePathᅟ: str#

此属性包含与该小部件关联的文件路径。

此属性仅对窗口有效。它将文件路径与窗口关联。如果您设置了文件路径,但未设置窗口标题,Qt 将使用 QFileInfo::fileName() 获取的指定路径的文件名设置为窗口标题。

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

此外,在macOS上,这还有一个额外的优点,即它为窗口设置代理图标,前提是文件路径存在。

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

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

访问函数
属性windowIcon:QIcon#

此属性包含小部件的图标。

此属性仅适用于窗口。如果没有设置图标,则 windowIcon() 返回应用程序图标 (QApplication::windowIcon())。

注意

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

访问函数
属性windowIconText:str#

此属性包含要显示在最小化窗口图标上的文本。

此属性仅适用于窗口。如果没有设置图标文本,则此访问器返回空字符串。仅在实际中实现了X11平台,并且只有某些窗口管理器使用此窗口属性。

此属性已弃用。

访问函数
属性windowModality:Qt.WindowModality#

此属性包含由模态小部件阻塞的窗口。

该属性仅对窗口有效。模式窗口控件会阻止其他窗口中的控件接收输入。该属性的值控制当窗口可见时阻止哪些窗口。在窗口可见时更改此属性没有效果;您必须先使用hide()隐藏控件,然后再使用show()显示控件。

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

参阅

isWindow() modal QDialog

访问函数
属性 windowModified()

该属性表示窗口中显示的文档是否有未保存的更改。

已修改的窗口是指内容已更改但尚未保存到磁盘的窗口。此标志在不同平台上的效果可能不同。在 macOS 上,关闭按钮将具有已修改的外观;在其他平台上,窗口标题将带有“*”(星号)。

窗口标题必须包含一个“[*]”占位符,该占位符表示“*”应出现的位置。通常,它应该出现在文件名之后(例如,“document1.txt[*] - 文本编辑器”)。如果窗口未修改,则此占位符将被简单地删除。

请注意,如果将一个控件设置为已修改,则它的所有父级也将被设置为已修改。但是,如果您对一个控件调用setWindowModified(false),则此操作不会传播到其父级,因为父级的其他子级可能已被修改。

参阅

窗口标题

访问函数
属性 windowOpacity()

该属性表示窗口的透明度级别。

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

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

此功能在支持复合扩展的嵌入式 Linux、macOS、Windows 和 X11 平台上可用。

注意

在 X11 上,您需要有一个正在运行的复合管理器,并且您使用的窗口管理器必须支持 X11 特定的 _NET_WM_WINDOW_OPACITY 原子。

注意

将此属性从不透明更改为透明可能会引发需要先处理的绘图事件,以便窗口正确显示。这主要影响 QScreen::grabWindow() 的使用。此外,请注意,半透明窗口的更新和调整大小速度比不透明窗口慢得多。

访问函数
属性 windowTitle()

该属性表示窗口标题(标题)。

此属性仅适用于顶级小部件,如窗口和对话框。如果没有设置标题,则标题根据windowFilePath生成。如果这两者都没有设置,则标题为空字符串。

如果您使用windowModified机制,窗口标题必须包含一个“[*]”占位符,表示“*”应出现的位置。通常,它应位于文件名之后(例如,“document1.txt[*] - 文本编辑器”)。如果windowModified属性为false(默认值),则占位符将被简单地移除。

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

参阅

windowIcon windowModified windowFilePath

访问函数
propertyx:int#

此属性包含小部件相对于其父对象以及任何窗口框架的x坐标。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

访问函数
propertyy:int#

此属性包含小部件相对于其父对象以及任何窗口框架的y坐标。

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

访问函数
__init__([parent=None[, f=Qt.WindowFlags()]])#
参数:

构建一个widget,它是parent的子节点,并且设置了widget标记为f

如果parentNone,新的widget将成为一个窗口。如果parent是另一个widget,则此widget将成为parent内部的一个子窗口。当其parent被删除时,新的widget也会被删除。

widget标记参数,f,通常为0,但它可以被设置为自定义窗口的框架(即parent必须是None)。要自定义框架,请使用由任意窗口标记的按位或组合而成的值。

如果你向一个已可见的widget添加子widget,你必须显式地显示子widget来使其可见。

请注意,Qt的X11版本可能无法在所有系统上传达所有样式标记的组合。这是因为X11上,Qt只能询问窗口管理器,而窗口管理器可以覆盖应用程序的设置。在Windows上,Qt可以设置你想要的任何标记。

参阅

窗口标记

acceptDrops()#
返回类型::

bool

属性 acceptDropsᅟ 的获取器。

accessibleDescription()#
返回类型::

str

属性 accessibleDescriptionᅟ 的获取器。

accessibleName()#
返回类型::

str

属性 accessibleNameᅟ 的获取器。

actionEvent(event)#
参数:

事件QActionEvent

在widget的操作更改时,此事件处理程序会使用给定的event被调用。

actions()#
返回类型::

.QAction 对象列表

返回此小部件动作的(可能为空的)列表。

activateWindow()#

将包含此小部件的最顶层小部件设置为活动窗口。

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

此函数执行与单击最顶层窗口标题栏相同的操作。在 X11 中,结果取决于窗口管理器。如果您想确保窗口在堆栈中也位于顶部,则还应调用 raise() 。请注意,窗口必须可见,否则 activateWindow() 无效。

在 Windows 上,如果您在应用程序当前不是活动窗口的情况下调用此函数,则它不会使其成为活动窗口。它将更改任务栏条目的颜色,表示窗口已发生某些变化。这是因为 Microsoft 不允许应用程序中断用户在另一个应用程序中当前正在执行的操作。

addAction(icon, text, receiver, member[, type=Qt.AutoConnection])#
参数:
返回类型::

QAction

addAction(text, receiver, member[, type=Qt.AutoConnection])
参数:
返回类型::

QAction

addAction(text, shortcut, receiver, member[, type=Qt.AutoConnection])
参数:
返回类型::

QAction

addAction(text, shortcut)
参数:
返回类型::

QAction

addAction(text)
参数:

text – 字符串

返回类型::

QAction

addAction(icon, text, shortcut, receiver, member[, type=Qt.AutoConnection])
参数:
返回类型::

QAction

addAction(icon, text, shortcut)
参数:
返回类型::

QAction

addAction(icon, text)
参数:
  • iconQIcon

  • text – 字符串

返回类型::

QAction

addAction(text, shortcut, callable)
参数:
  • text – 字符串

  • 快捷键QKeySequence

  • 可调用对象 – object

返回类型::

QAction

addAction(text, callable)
参数:
  • text – 字符串

  • 可调用对象 – object

返回类型::

QAction

addAction(icon, text, shortcut, callable)
参数:
  • iconQIcon

  • text – 字符串

  • 快捷键QKeySequence

  • 可调用对象 – object

返回类型::

QAction

addAction(icon, text, callable)
参数:
  • iconQIcon

  • text – 字符串

  • 可调用对象 – object

返回类型::

QAction

addAction(action)
参数:

操作QAction

将操作 action 添加到此小部件的操作列表中。

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

QWidget应该只有一个每个动作,添加已经存在的动作不会导致同一种动作在widget中重复出现。

action的所有权没有转移到这个QWidget

参阅

removeAction() insertAction() actions() QMenu

addActions(actions)
参数:

actions – .QAction的列表

将动作actions追加到这个widget动作列表中。

参阅

removeAction() QMenu addAction()

adjustSize()

调整widget的大小以适应其内容。

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

对于窗口,也会考虑屏幕的大小。如果sizeHint()小于(200, 100)且大小策略为expanding,则窗口的大小至少为(200, 100)。窗口的最大大小为屏幕宽度和高度的三分之二。

参阅

sizeHint() childrenRect()

autoFillBackground()
返回类型::

bool

属性 autoFillBackground 的获取器。

backgroundRole()#
返回类型::

颜色角色

返回小部件的背景角色。

背景角色定义了从小部件的 palette 中用于渲染背景的画笔。

如果没有设置显式的背景角色,则小部件会继承其父小部件的背景角色。

backingStore()#
返回类型::

QBackingStore

返回将在此小部件中绘制的小部件的 QBackingStore。

baseSize()#
返回类型::

QSize

参阅

setBaseSize()

属性 baseSize 的获取器。

changeEvent(event)#
参数:

eventQEvent

可以重新实现此事件处理程序以处理状态更改。

此事件中正在更改的状态可以通过提供的 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。

childAt(p)#
参数:

pQPoint

返回类型::

QWidget

这是一个重载的函数。

返回在 widget 的坐标系中点 p 处可见的子 Widget。

childAt(x, y)
参数:
  • x – int

  • y – int

返回类型::

QWidget

返回在 widget 的坐标系中位置 (x, y) 处可见的子 Widget。如果没有在指定位置找到可见的子 Widget,则该函数返回 None。

childrenRect()#
返回类型::

QRect

属性 childrenRect 的获取器。

childrenRegion()#
返回类型::

QRegion

属性 childrenRegion 的获取器。

clearFocus()#

从该小部件获取键盘输入焦点。

如果该小部件处于活动焦点状态,会向其发送一个 focusOutEvent 事件,告知它已失去焦点。

此小部件必须启用焦点设置以获得键盘输入焦点;即必须调用 setFocusPolicy()

clearMask()#

移除由 setMask() 设置的任何遮罩。

close()#
返回类型::

bool

关闭此小部件。如果小部件关闭,返回 true,否则返回 false

首先向小部件发送一个 QCloseEvent。如果小部件接受关闭事件,它会被 隐藏。如果它忽略事件,则不会发生任何操作。默认的 closeEvent() 实现将接受关闭事件。

如果小部件具有 Qt::WA_DeleteOnClose 标志,则也会删除该小部件。无论小部件是否可见,都会向其发送一个关闭事件。

当最后一个可见的主窗口(即无父窗口的窗口)关闭时,会触发 QGuiApplication::lastWindowClosed() 信号,并且该窗口已设置 Qt::WA_QuitOnClose 属性。默认情况下,此属性适用于所有小部件,除了如启动界面、工具窗口和弹出菜单之类的临时窗口。

closeEvent(event)#
参数:

eventQCloseEvent

当 Qt 从窗口系统接收到对顶层窗口的关闭请求时,事件处理程序会使用给定的 event 被调用。

默认情况下,事件被接受,并且窗口将被关闭。您可以重写此函数来改变窗口关闭请求时窗口的响应方式。例如,您可以通过对所有事件调用 ignore() 来防止窗口关闭。

主窗口应用程序通常使用此函数的重写来检查用户的工作是否已保存,并在关闭之前请求权限。

参阅

event() hide() close() QCloseEvent

contentsMargins()#
返回类型::

QMargins

contentsMargins() 函数返回窗口的内容边距。

contentsRect()#
返回类型::

QRect

返回窗口边距内的区域。

contextMenuEvent(event)#
参数:

eventQContextMenuEvent

此事件处理程序(针对事件 event),可以在子类中重写以接收窗口上下文菜单事件。

当窗口的 contextMenuPolicy 是 Qt::DefaultContextMenu 时,将调用处理程序。

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

contextMenuPolicy()#
返回类型::

ContextMenuPolicy

属性contextMenuPolicy的获取器。

create([arg__1=0[, initializeWindow=true[, destroyOldWindow=true]]])#
参数:
  • arg__1WId

  • initializeWindow – bool

  • destroyOldWindow – bool

创建一个新的小部件窗口。

在Qt 5中,参数windowinitializeWindowdestroyOldWindow将被忽略。请使用QWindow::fromWinId创建一个封装Foreign窗口的QWindow,并将其传递给createWindowContainer代替。

参阅

createWindowContainercreateWindowContainerfromWinId

createWinId()#
静态createWindowContainer(window[, parent=None[, flags=Qt.WindowFlags()]])#
参数:
返回类型::

QWidget

创建一个QWidget,使得将其嵌入到一个基于QWidget的应用程序中成为可能。

窗口容器作为parent的子项,并且具有窗口标志flags被创建。

一旦窗口被嵌入到容器中,容器将控制窗口的几何形状和可见性。不推荐对嵌入式窗口显式调用QWindow::setGeometry()、QWindow::show()或QWindow::hide()。

容器将控制window的所有权。可以通过调用QWindow::setParent()从窗口容器中移除窗口。

窗口容器以原生子窗口的形式附加到其所属的最顶层窗口。当窗口容器用作QAbstractScrollAreaQMdiArea 的子窗口时,它将为父窗口链中的每个小部件创建一个原生窗口,以允许在此用例中正确堆叠和剪切。为窗口容器创建原生窗口也允许正确堆叠和剪切。这必须在显示窗口容器之前完成。具有许多原生子窗口的应用程序可能会遭受性能问题。

窗口容器有一些已知的限制

  • 堆叠顺序;嵌入的窗口将作为一个不透明框堆叠在窗口层次结构的顶部。多个重叠窗口容器实例的堆叠顺序是未定义的。

  • 渲染集成;窗口容器不与QGraphicsProxyWidgetrender() 或类似功能互操作。

  • 焦点处理;可以允许窗口容器实例具有任何焦点策略,并且它将通过调用 QWindow::requestActivate() 将焦点委托给窗口。然而,从 QWindow 实例返回正常焦点链将取决于 QWindow 实例的实现本身。例如,当进入基于 Qt Quick 的窗口并具有标签键焦点时,很可能进一步的标签点击只会在这个 QML 应用程序内循环。另外,QWindow::requestActivate() 是否实际上提供了窗口焦点是平台相关的。

  • 在基于QWidget 的应用程序中使用许多窗口容器实例可能会极大地损害应用程序的整体性能。

  • 从 6.7 开始,如果窗口属于小部件(即通过调用 windowHandle() 收到的窗口),则不会创建容器。相反,此函数将在将其父窗口设置为父窗口后返回小部件本身。因此,将忽略 flags。换句话说,如果窗口属于小部件,考虑仅将小部件重新附加到 parent,而不是使用此函数。

cursor()#
返回类型::

QCursor

参阅

setCursor()

属性 cursor 的获取器。

customContextMenuRequested(pos)#
参数:

posQPoint

此信号在控件contextMenuPolicy为Qt::CustomContextMenu并且用户请求在控件上显示上下文菜单时发出。位置pos是指控件接收到的上下文菜单事件的位置。通常这在使用控件坐标中。例外的是QAbstractScrollArea及其子类,它们将上下文菜单事件映射到viewport()的坐标系。

destroy([destroyWindow=true[, destroySubWindows=true]])#
参数:
  • destroyWindow – bool

  • destroySubWindows – bool

释放窗口系统资源。如果destroyWindow为true,则销毁控件窗口。

destroy()函数会对所有子控件递归调用自身,为destroyWindow参数传递destroySubWindows。要更精确地控制子控件的销毁,先选择性地销毁子控件。

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

dragEnterEvent(event)#
参数:

eventQDragEnterEvent

当拖动操作进行中且鼠标进入此控件时,会调用此事件处理器。事件作为event参数传递。

如果忽略此事件,则该控件不会收到任何drag-move events

有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。

参阅

QDragQDragEnterEvent

dragLeaveEvent(event)#
参数:

eventQDragLeaveEvent

当拖动操作进行中且鼠标离开此控件时,会调用此事件处理器。事件作为event参数传递。

有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。

参阅

QDragQDragLeaveEvent

dragMoveEvent(event)#
参数:

eventQDragMoveEvent

当拖动操作正在进行时,如果发生以下任何一种情况,则调用该事件处理程序:光标进入此小部件,光标在此小部件内部移动,或者当此小部件具有焦点时,在键盘上按下修改键。事件通过event参数传递。

有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。

参阅

QDragQDragMoveEvent

dropEvent(event)#
参数:

eventQDropEvent

当拖动到此小部件时,调用该事件处理程序。事件通过event参数传递。

有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。

参阅

QDragQDropEvent

effectiveWinId()#
返回类型::

WId

返回小部件的有效窗口系统标识符,即本地父窗口的窗口系统标识符。

如果该小部件是内置的,则此函数返回内置小部件ID。否则,返回第一个内置父小部件的窗口ID,即包含此小部件的最高级小部件。

注意

建议不要存储此值,因为它可能在运行时发生变化。

ensurePolished()#

确保小部件及其子小部件已经被QStyle(即,有合适的字体和调色板)润色。

QWidget在完全构建后,但在第一次显示之前调用此函数。如果您想在执行操作之前确保小部件已被润色,可以调用此函数,例如,在执行小部件的sizeHint()重写时,可能需要正确的字体大小。请注意,此函数来自于sizeHint()的默认实现。

润色在有所有构造函数(从基类以及从子类)调用之后进行的最终初始化中非常有用。

如果您需要在润色小部件时更改一些设置,请重写event()并处理QWidgetevent()QWidgetevent()事件类型。

注意

由于这个函数可以从其他常量函数中调用(例如,sizeHint()),因此该函数被声明为const。

参阅

event()

enterEvent(event)#
参数:

事件QEnterEvent

该事件处理程序可以在子类中重新实现,以接收在 event 参数中传递的窗口小部件进入事件。

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

静态 find(arg__1)#
参数:

arg__1WId

返回类型::

QWidget

返回具有窗口标识符/句柄 id 的窗口小部件的指针。

窗口标识符类型取决于底层窗口系统。有关实际定义,请参见 qwindowdefs.h。如果没有与此标识符对应的窗口小部件,则返回 None

focusInEvent(event)#
参数:

事件QFocusEvent

可以在子类中重新实现此事件处理程序以接收小部件的键盘焦点事件(接收焦点)。事件通过 event 参数传递。

小部件通常必须将 setFocusPolicy() 设置为 Qt::NoFocus 之外的东西以接收焦点事件。(注意,应用程序程序员可以在任何窗口小部件上调用 setFocus(),即使这些小部件通常不接受焦点。)

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

focusNextChild()#
返回类型::

bool

查找适当的新的窗口小部件以接受键盘焦点,如果可以找到新的小部件,则返回 true,否则返回 false

focusNextPrevChild(next)#
参数:

next – bool

返回类型::

bool

寻找新控件以提供键盘焦点,适用于Tab和Shift+Tab情况,如果能找到新控件则返回true,否则返回false。

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

有时,你可能需要重写这个函数。例如,网页浏览器可能重写它以将“当前激活链接”向前或向后移动,并且仅在达到“页面”上的最后一个或第一个链接时才调用focusNextPrevChild()。

子控件在其父控件上调用自己的focusNextPrevChild(),但只有包含子控件的窗口才能决定焦点重定向的位置。通过为对象重写这个函数,你可以因此获得对所有子控件焦点遍历的控制。

focusOutEvent(event)#
参数:

事件QFocusEvent

子类可重写此事件处理器以接收控件的键盘焦点事件(焦点丢失)。事件通过event参数传递。

小部件通常必须将 setFocusPolicy() 设置为 Qt::NoFocus 之外的东西以接收焦点事件。(注意,应用程序程序员可以在任何窗口小部件上调用 setFocus(),即使这些小部件通常不接受焦点。)

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

focusPolicy()#
返回类型::

FocusPolicy

属性focusPolicyᅟ的获取器。

focusPreviousChild()#
返回类型::

bool

寻找新控件以提供键盘焦点,适用于Shift+Tab,如果能找到新控件则返回true,否则返回false。

focusProxy()#
返回类型::

QWidget

返回焦点代理,如果没有焦点代理则返回None

focusWidget()#
返回类型::

QWidget

返回此小部件最后一个被调用过 setFocus 的子小部件。对于顶级小部件,这是当此窗口被激活时将获得焦点的小部件。

这不同于 focusWidget() ,它返回当前活动窗口中的焦点小部件。

font()#
返回类型::

QFont

参阅

setFont()

属性 font 的获取器。

fontInfo()#
返回类型::

QFontInfo

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

fontMetrics()#
返回类型::

QFontMetrics

返回小部件当前字体的字体度量信息。相当于 QFontMetrics(widget->font())

foregroundRole()#
返回类型::

颜色角色

返回前景角色。

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

如果没有显式设置前景角色,则函数返回与背景角色形成对比的角色。

frameGeometry()#
返回类型::

QRect

属性 frameGeometry 的获取器。

frameSize()#
返回类型::

QSize

属性 frameSize 的获取器。

geometry()#
返回类型::

QRect

参阅

setGeometry()

属性 geometry 的获取器。

grab([rectangle=QRect(QPoint(0, 0), QSize(-1, -1))])#
参数:

rectangleQRect

返回类型::

QPixmap

将小部件绘制到由给定的 rectangle 限制的位图中。如果小部件有子元素,则它们也将被绘制到适当的posit

如果指定了一个具有无效大小(默认值)的矩形,则整个小部件将被绘制。

参阅

render() QPixmap

grabGesture(type[, flags=Qt.GestureFlags()])#
参数:

将小部件订阅给一个具有特定 flagsgesture

grabKeyboard()#

抓取键盘输入。

该小部件在 releaseKeyboard() 被调用之前接收所有键盘事件;其他小部件则完全接收不到键盘事件。鼠标事件不受影响。如果您想抓取鼠标,请使用 grabMouse()

焦点小部件不受影响,除不接收任何键盘事件。 setFocus() 在通常情况下移动焦点,但新的焦点小部件只有在调用 releaseKeyboard() 后才会接收键盘事件。

如果当前有不同的小部件正在抓取键盘输入,则会首先释放该小部件的抓取。

grabMouse()#

抓取鼠标输入。

该小部件在调用 releaseMouse() 之前接收所有鼠标事件;其他小部件则完全不接收鼠标事件。键盘事件不受影响。如果需要抓取键盘,请使用 grabKeyboard()

注意

鼠标抓取应用程序的Bug经常锁定终端。请谨慎使用此函数,并在调试时考虑使用 -nograb 命令行选项。

在使用 Qt 时通常很少需要抓取鼠标,因为 Qt 能够合理地抓取和释放它。特别是,Qt 在鼠标按钮按下时抓取鼠标,并在最后一个按钮释放后保持它。

注意

只有可见的小部件才能抓取鼠标输入。如果 isVisible() 对小部件返回 false,则该小部件不能调用 grabMouse()。

注意

在 Windows 上,当鼠标位于进程拥有的窗口内时,grabMouse() 才起作用。在 macOS 上,只有在鼠标位于该小部件框架内时,grabMouse() 才起作用。

grabMouse(arg__1)
参数:

arg__1QCursor

此函数重载了 grabMouse()

抓取鼠标输入并更改光标形状。

当鼠标焦点被捕获时,光标将呈现为cursor形状,直到调用releaseMouse()方法()。在此期间,此小部件将是唯一可以接收鼠标事件的小部件。

注意

捕获鼠标可能会锁定终端。

注意

请参阅grabMouse()方法的说明。

grabShortcut(key[, context=Qt.WindowShortcut])#
参数:
返回类型::

int

此方法向Qt的快捷键系统中添加一个快捷键,用于在指定的context中监视所提供的key序列。如果context是Qt::ApplicationShortcut,则快捷键应用于整个应用程序。否则,它可以是此小部件的本地快捷键(Qt::WidgetShortcut)或窗口本身的快捷键(Qt::WindowShortcut)。

如果几个小部件捕获了相同的key序列,当key序列发生时,将向适用于该序列且顺序非确定的所有小部件发送QEvent::Shortcut事件,但“ambiguous”标志设置为true。

注意

通常,您不需要使用此函数。相反,创建具有所需快捷键序列的QActions(如果您还需要等效的菜单选项和工具栏按钮),或者创建QShortcuts(如果您只需要键序列)。QAction和QShortcut都为您处理所有事件过滤,并提供在用户触发键序列时被触发的信号,因此使用起来比此低级函数要简单得多。

graphicsEffect()#
返回类型::

QGraphicsEffect

此函数返回指向小部件图形效果的指针。

如果小部件没有图形效果,则返回None。

graphicsProxyWidget()#
返回类型::

QGraphicsProxyWidget

返回图形视图中相应嵌入式小部件的代理小部件;否则返回 None

hasFocus()#
返回类型::

bool

属性 focusᅟ 的获取器。

hasHeightForWidth()#
返回类型::

bool

如果该小部件的首选高度取决于其宽度,则返回 true;否则返回 false

hasMouseTracking()#
返回类型::

bool

属性 mouseTrackingᅟ 的获取器。

hasTabletTracking()#
返回类型::

bool

属性 tabletTrackingᅟ 的获取器。

heightForWidth(arg__1)#
参数:

arg__1 – int

返回类型::

int

给定宽度 w,返回该小部件的首选高度。

如果该小部件有布局,默认实现返回布局的首选高度。如果没有布局,则默认实现返回 -1,表示首选高度不依赖于宽度。

hide()#

隐藏该小部件。该函数等同于 setVisible (false)。

注意

如果您在处理 QDialog 或其子类,并在调用此函数后调用 show() 函数,对话框将显示在其原始位置。

hideEvent(event)#
参数:

eventQHideEvent

此事件处理程序可以作为子类实现,以接收小部件隐藏事件。事件通过event参数传入。

隐藏事件在小部件被隐藏后立即发送。

注意:当窗口系统的映射状态改变时,小部件会接收到自发的显示和隐藏事件,例如,当用户最小化窗口时,会接收到自发的隐藏事件,当窗口恢复时,会接收到自发的显示事件。接收到自发的隐藏事件后,小部件仍然被视为在isVisible()意义上的可见。

参阅

visible 事件 QHideEvent

inputMethodEvent(event)#
参数:

eventQInputMethodEvent

此事件处理程序,对于事件 event,可以在子类中实现以接收输入方法组合事件。当输入方法的状况变化时,会调用此处理程序。

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

默认实现调用 event->ignore()},这拒绝了输入方法事件。有关更多信息,请参阅 QInputMethodEvent 文档。

参阅

event() QInputMethodEvent

inputMethodHints()#
返回类型::

InputMethodHint 的组合

属性 inputMethodHints 的获取器。

inputMethodQuery(arg__1)#
参数:

arg__1InputMethodQuery

返回类型::

对象

此方法仅针对输入小部件。输入法使用它来查询将要支持复杂输入法操作的属性集,例如对周围文本的支持和重转换。

query 指定了查询哪个属性。

insertAction(before, action)#
参数:

before 指定的动作之前插入动作 action 到此小部件的动作列表中。如果 beforeNonebefore 不是此小部件的有效动作,则附加此动作。

QWidget 只应有一个每个动作。

insertActions(before, actions)#
参数:
  • beforeQAction

  • actions – .QAction的列表

将该操作 actions 插入到此小部件操作列表中,位于操作 before 之前。如果 before 为 None 或 before 不是此小部件的有效操作,则附加操作。

QWidget 每种操作最多只能有一个。

internalWinId()#
返回类型::

WId

isActiveWindow()#
返回类型::

bool

属性 isActiveWindow 的获取器。

isAncestorOf(child)#
参数:

childQWidget

返回类型::

bool

如果此小部件是给定的 child 的父级(或任何层次的祖父级等),并且两个小部件都在同一窗口中,则返回 true,否则返回 false

isEnabled()#
返回类型::

bool

属性 enabled 的获取器。

isEnabledTo(arg__1)#
参数:

arg__1QWidget

返回类型::

bool

如果此小部件在 ancestor 启用的情况下会变为启用,则返回 true,否则返回 false

如果小部件或者从其父级到但不超过 ancestor 的所有父级都没有被明确禁用,则这种情况成立。

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

这里的“祖先”是指在同一个窗口内的父级小部件。

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

参阅

setEnabled() enabled

isFullScreen()#
返回类型::

bool

属性 fullScreenᅟ 的获取器。

isHidden()#
返回类型::

bool

如果小部件被隐藏,则返回 true,否则返回 false

隐藏的小部件只有在其上调用 show() 时才会变为可见。当父小部件显示时,它不会自动显示。

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

isHidden() 意味着 ! isVisible() ,但小部件可以同时不可见且未隐藏。这就是那些属于不可见小部件的小部件的情况。

小部件会被隐藏,如果

  • 它们被创建为独立窗口,

  • 它们被创建为可见小部件的子元素,

  • hide()setVisible(false)被调用。

isLeftToRight()#
返回类型::

bool

isMaximized()#
返回类型::

bool

属性 maximizedᅟ 的获取器。

isMinimized()#
返回类型::

bool

属性 minimizedᅟ 的获取器。

isModal()#
返回类型::

bool

属性 modalᅟ 的获取器。

isRightToLeft()#
返回类型::

bool

isTopLevel()#
返回类型::

bool

注意

此函数已弃用。

请使用 isWindow() 代替。

isVisible()#
返回类型::

bool

属性 visible 的获取器。

isVisibleTo(arg__1)#
参数:

arg__1QWidget

返回类型::

bool

如果显示 ancestor ,则此小部件将变成可见;否则返回 false

在 true 的情况下,小部件自身或任何祖先(不包括 ancestor )没有被显式隐藏。

即使小部件被屏幕上的其他窗口遮挡,此函数仍将返回 true,但如果移动它们,小部件可能是实际可见的。

isVisibleTo(0) 与 isVisible() 相同。

isWindow()#
返回类型::

bool

如果小部件是独立窗口,则返回 true,否则返回 false

窗口是一种小部件,它不是任何其他小部件的视觉子项,并且通常具有边框和一个 窗口标题

窗口可以有 父小部件。然后它将与父小部件分组,并在删除父小部件时删除,当父小部件最小化时也最小化等。如果窗口管理器支持,它还将与其父小部件具有共同的任务栏条目。

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

isWindowModified()#
返回类型::

bool

属性 windowModified 的获取器。

keyPressEvent(event)#
参数:

eventQKeyEvent

此事件处理程序用于处理 event 事件,可以在子类中重新实现以接收小部件的关键字按压事件。

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

如果你重新实现了此处理程序,但如果未对按键采取任何行动,则非常重要,必须调用基类实现。

默认实现在使用者按下 QKeySequence::Cancel(通常为 Escape 键)的键序列时关闭弹出小部件。否则,事件被忽略,以便小部件的父对象可以解释它。

请注意,QKeyEvent 开始时的 isAccepted() == true,因此您不需要调用 QKeyEvent::accept() - 只需在处理按键时不要调用基类实现即可。

keyReleaseEvent(event)#
参数:

eventQKeyEvent

此事件处理程序用于处理 event 事件,可以在子类中重新实现以接收小部件的关键字释放事件。

小部件必须 接受 focus 初始焦点并 拥有 focus 以接收按键释放事件。

如果你重新实现了此处理程序,但如果未对按键采取任何行动,则非常重要,必须调用基类实现。

默认实现忽略事件,以便小部件的父对象可以解释它。

请注意,QKeyEvent 开始时的 isAccepted() == true,因此您不需要调用 QKeyEvent::accept() - 只需在处理按键时不要调用基类实现即可。

static keyboardGrabber()
返回类型::

QWidget

返回当前占用键盘输入的控件。

如果当前没有控件占用键盘,则返回 None。

layout()
返回类型::

QLayout

返回此控件安装的布局管理器,如果没有安装布局管理器则返回 None。

布局管理器设置布局中添加的子控件的几何形状。

layoutDirection()
返回类型::

布局方向

属性 layoutDirection† 的获取器。

leaveEvent(event)
参数:

eventQEvent

此事件处理器可以在子类中重新实现,以接收通过 event 参数传递的控件离开事件。

当鼠标光标离开控件时,会发送离开事件到控件。

locale()
返回类型::

QLocale

参阅

setLocale()

属性 locale† 的获取器。

lower()#

将小部件降低到父窗口堆叠的最下面。

此调用之后,窗口将视觉上位于(因此被)任何重叠的兄弟窗口之后。

参阅

raise() stackUnder()

mapFrom(arg__1, arg__2)#
参数:
返回类型::

QPoint

这是一个重载的函数。

mapFrom(arg__1, arg__2)
参数:
返回类型::

QPointF

将窗口坐标posparent的坐标系转换到本窗口的坐标系。必须为非None,并且必须是调用窗口的父窗口。

mapFromGlobal(arg__1)#
参数:

arg__1QPoint

返回类型::

QPoint

这是一个重载的函数。

mapFromGlobal(arg__1)
参数:

arg__1QPointF

返回类型::

QPointF

将全局屏幕坐标 pos 转换为窗口坐标。

mapFromParent(arg__1)#
参数:

arg__1QPoint

返回类型::

QPoint

这是一个重载的函数。

mapFromParent(arg__1)
参数:

arg__1QPointF

返回类型::

QPointF

将父窗口坐标 pos 转换为窗口坐标。

如果窗口没有父窗口,则等同于 mapFromGlobal()

mapTo(arg__1, arg__2)#
参数:
返回类型::

QPoint

这是一个重载的函数。

mapTo(arg__1, arg__2)
参数:
返回类型::

QPointF

将窗口坐标 pos 转换为 parent 坐标系。其中 parent 不能为空,且必须是调用窗口的父窗口。

mapToGlobal(arg__1)#
参数:

arg__1QPoint

返回类型::

QPoint

这是一个重载的函数。

mapToGlobal(arg__1)
参数:

arg__1QPointF

返回类型::

QPointF

将窗口坐标 pos 转换为全局屏幕坐标。例如,mapToGlobal(QPointF(0,0)) 将给出窗口左上像素的全局坐标。

mapToParent(arg__1)#
参数:

arg__1QPointF

返回类型::

QPointF

将小部件坐标 pos 转换为父小部件中的坐标。

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

mapToParent(arg__1)
参数:

arg__1QPoint

返回类型::

QPoint

这是一个重载的函数。

mask()#
返回类型::

QRegion

返回设置在控件上的当前掩码。如果没有设置掩码,返回值将为空区域。

maximumHeight()#
返回类型::

int

属性 maximumHeightᅟ 的获取器。

maximumSize()#
返回类型::

QSize

属性 maximumSizeᅟ 的获取器。

maximumWidth()#
返回类型::

int

属性 maximumWidthᅟ 的获取器。

minimumHeight()#
返回类型::

int

属性 minimumHeightᅟ 的获取器。

minimumSize()#
返回类型::

QSize

属性 minimumSizeᅟ 的获取器。

minimumSizeHint()#
返回类型::

QSize

属性 minimumSizeHintᅟ 的获取器。

minimumWidth()#
返回类型::

int

属性 minimumWidth 的获取器。

mouseDoubleClickEvent(event)#
参数:

event - QMouseEvent

此事件处理程序负责处理事件 event,可以在子类中重新实现以接收小部件的双击鼠标事件。

默认实现会调用 mousePressEvent()

注意

除了双击事件外,小部件还会接收到鼠标按下和鼠标释放事件。如果与此小部件重叠的另一个小部件在按下或释放事件时消失,则此小部件仅接收到双击事件。确保应用程序正确解释这些事件是开发者的责任。

static mouseGrabber()#
返回类型::

QWidget

返回当前获取鼠标输入的小部件。

如果没有小部件在这个应用程序中当前获取鼠标,返回 None

mouseMoveEvent(event)#
参数:

event - QMouseEvent

此事件处理程序负责处理事件 event,可以在子类中重新实现以接收小部件的鼠标移动事件。

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

QMouseEvent::pos() 报告鼠标光标相对于此小部件的位置。对于按下和释放事件,位置通常与最后鼠标移动事件的位置相同,但如果用户的手颤抖,可能会不同。这是底层窗口系统的特性,而非 Qt 的。

如果您希望在鼠标移动时立即显示提示信息(例如,使用 QMouseEvent::pos() 获取鼠标坐标并以提示信息的形式显示),您必须首先启用鼠标跟踪,如上所述。然后,为了确保提示信息能够立即更新,必须在您的 mouseMoveEvent() 实现中调用 showText() 而不是 setToolTip()

mousePressEvent(event)#
参数:

event - QMouseEvent

该事件处理器,用于处理 event 事件,可以在子类中重写以接收部件的鼠标按下事件。

如果你在 mousePressEvent() 中创建新的部件,mouseReleaseEvent() 可能不会结束在您预期的地方,这取决于底层窗口系统(或X11窗口管理器)、部件的位置等。

默认实现在您在窗口外点击时关闭弹出式部件。对于其他部件类型,它不做任何事情。

mouseReleaseEvent(event)#
参数:

event - QMouseEvent

该事件处理器,用于处理 event 事件,可以在子类中重写以接收部件的鼠标释放事件。

move(arg__1)#
参数:

arg__1QPoint

属性pos的设置器。

move(x, y)
参数:
  • x – int

  • y – int

这是一个重载的函数。

这相当于move(QPoint(x, y))

moveEvent(event)#
参数:

event - QMoveEvent

这个事件处理程序可以在子类中重写以接收传递给event参数的控件移动事件。控件接收到这个事件时,它已经处于新位置。

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

参阅

resizeEvent() event() move() QMoveEvent

nativeEvent(eventType, message)#
参数:
返回类型::

PyObject

这个特殊事件处理程序可以在子类中重写以接收由eventType标识并由message参数传入的本地平台事件。

在您的函数重写中,如果您想阻止Qt处理事件,请返回true并设置result。只有Windows上才有result参数的意义。如果您返回false,此本地事件将返回到Qt,Qt将事件转换为Qt事件并发送到控件。

注意

只有具有本地窗口句柄的控件才会将事件传递到此事件处理程序。

注意

此函数代替了Qt 4的事件过滤器函数x11Event()、winEvent()和macEvent()。

平台

事件类型标识符

消息类型

结果类型

Windows

“windows_generic_MSG”

MSG *

LRESULT

macOS

“NSEvent”

NSEvent *

XCB

“xcb_generic_event_t”

xcb_generic_event_t *

nativeParentWidget()#
返回类型::

QWidget

返回此小部件的原生父元素,即下一个具有系统标识符的祖先小部件,如果没有原生父元素,则返回 None

nextInFocusChain()#
返回类型::

QWidget

返回此小部件的焦点链中的下一个小部件。

normalGeometry()#
返回类型::

QRect

属性 normalGeometry 的获取器。

overrideWindowFlags(type)#
参数:

typeWindowType 的组合

将小部件的窗口标志设置为 flags,但不会告知窗口系统。

注意

除非你真的清楚你在做什么,否则不要调用此函数。

overrideWindowState(state)#
参数:

stateWindowState 的组合

paintEvent(event)#
参数:

eventQPaintEvent

事件处理程序可以被子类重写以接收在 event 中传递的绘图事件。

绘图事件是要求重绘小部件全部或部分内容的方法。它可能由以下原因之一引起

  • repaint()update() 被调用,

  • 小部件被遮挡,现在已被揭露,或

  • 许多其他原因。

许多小部件在被要求时可以简单地重绘其整个表面,但某些运行缓慢的小部件需要通过仅绘制请求的区域来优化:QPaintEvent::region()。这种速度优化不会改变结果,因为绘图在事件处理期间会被剪切到该区域。例如,QListViewQTableView 会这样做。

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

当绘图事件发生时,更新区域通常已经被清除,因此你正在绘图部件的背景上。

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

自Qt 4.0以来,QWidget自动双缓冲绘图,因此不需要在paintEvent()中编写双缓冲代码来避免闪烁。

注意

通常,你应该避免在paintEvent()内部调用update()repaint()。例如,在paintEvent()内部对子部件调用update()repaint()会导致未定义的行为;子部件可能会或可能不会收到绘图事件。

注意

如果你使用的是无Qt后端存储的自定义绘图引擎,必须设置Qt::WA_PaintOnScreen。否则,paintEngine()永远不会被调用;将使用后端存储。

参阅

event repaint update Analog Clock

palette()#
返回类型::

QPalette

属性palette的获取器。

parentWidget()#
返回类型::

QWidget

返回此部件的父部件,如果没有父部件,则返回None

pos()#
返回类型::

QPoint

属性pos的获取器。

previousInFocusChain()#
返回类型::

QWidget

previousInFocusChain函数返回当前 widget 的焦点链中的前一个 widget。

raise_()#
rect()#
返回类型::

QRect

属性 rect 的获取器。

releaseKeyboard()#

释放键盘捕获。

releaseMouse()#

释放鼠标捕获。

releaseShortcut(id)#
参数:

id – int

从 Qt 的快捷键系统中移除具有给定 id 的快捷键。该 widget 不会再接收 QEvent::Shortcut 事件,除非它有其他具有相同键序列的快捷键。

注意

通常不需要使用此函数,因为 Qt 的快捷键系统在父 widget 销毁时会自动移除快捷键。最好使用 QAction 或 QShortcut 来处理快捷键,因为它们比这个低级函数更容易使用。请注意,这操作代价较高。

removeAction(action)#
参数:

操作QAction

从该 widget 的动作列表中移除 action

render(target[, targetOffset=QPoint()[, sourceRegion=QRegion()[, renderFlags=QWidget.RenderFlags(QWidget.RenderFlag.DrawWindowBackground | QWidget.RenderFlag.DrawChildren)]]])#
参数:

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

使用 renderFlags 确定渲染方式,将此小部件的 sourceRegion 渲染到 target 中。渲染始于 target 中的 targetOffset。例如:

pixmap = QPixmap(widget.size())
widget.render(pixmap)

如果 sourceRegion 是一个空区域,此函数将使用 rect() 作为区域,即整个小部件。

确保在渲染之前调用 QPainter::end() 来结束 target 设备的当前活动画家(如果有)。例如:

painter = QPainter(self)
...
painter.end()
myWidget.render(self)

注意

要获取 QOpenGLWidget 的内容,请使用 QOpenGLWidget::grabFramebuffer()。

render(painter, targetOffset[, sourceRegion=QRegion()[, renderFlags=QWidget.RenderFlags(QWidget.RenderFlag.DrawWindowBackground | QWidget.RenderFlag.DrawChildren)]])
参数:

这是一个重载的函数。

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

在渲染时将使用对 painter 应用了变换和设置的。

注意

painter 必须是活动的。在 macOS 上,小部件将渲染到一个 QPixmap 中,然后使用 painter 绘制。

参阅

device()

repaint()#

通过调用 paintEvent() 立即重绘小部件,除非禁用了更新或小部件处于隐藏状态。

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

注意

如果您在一个可能被 paintEvent() 调用的函数中调用 repaint(),您可能会遇到无限递归。update() 函数永远不会导致递归。

repaint(arg__1)
参数:

arg__1QRect

这是一个重载的函数。

此版本的函数将在小部件内重绘矩形 rect

repaint(arg__1)
参数:

arg__1QRegion

这是一个重载的函数。

此版本的函数将在小部件内重绘区域 rgn

repaint(x, y, w, h)
参数:
  • x – int

  • y – int

  • w – int

  • h – int

这是一个重载的函数。

此版本的函数将在小部件内重绘矩形 (x, y, w, h)。

如果 w 为负,则替换为 width() - x,如果 h 为负,则替换为 height() - y

resize(arg__1)#
参数:

arg__1QSize

设置属性 size 的函数。

resize(w, h)
参数:
  • w – int

  • h – int

这是一个重载的函数。

这对应于 resize(QSize(w, h))).

resizeEvent(event)#
参数:

eventQResizeEvent

这个事件处理可以在子类中重新实现,以接收通过参数 event 传递的窗口部件尺寸改变事件。当调用 resizeEvent() 时,窗口部件已经具有了新的几何形状。旧的大小可以通过 QResizeEvent::oldSize() 获取。

在处理尺寸改变事件之后,窗口部件将立即被擦除并接收到一个绘制事件。在处理程序内部不需要(或不应)进行绘图。

restoreGeometry(geometry)#
参数:

geometryQByteArray

返回类型::

bool

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

从字节码 geometry 中恢复顶层窗口部件的几何形状和状态。成功则返回 true,否则返回 false

如果恢复的几何形状在屏幕外,它将被修改为在可用屏幕几何形状内。

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

settings = QSettings("MyCompany", "MyApp")
myWidget.restoreGeometry(settings.value("myWidget/geometry").toByteArray())

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

saveGeometry()#
返回类型::

QByteArray

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

保存顶级窗口部件的当前几何形状和状态。

要保存窗口关闭时的几何形状,可以实施如下关闭事件:

def closeEvent(self, event):

    settings = QSettings("MyCompany", "MyApp")
    settings.setValue("geometry", saveGeometry())
    QWidget.closeEvent(event)

有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。

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

screen()#
返回类型::

QScreen

返回部件所在的屏幕。

scroll(dx, dy, arg__3)#
参数:
  • dx – int

  • dy – int

  • arg__3QRect

这是一个重载的函数。

此版本仅滚动 r ,并不移动部件的子项。

如果 r 为空或无效,结果将未定义。

参阅

QScrollArea

scroll(dx, dy)
参数:
  • dx – int

  • dy – int

滚动部件及其子项,将其向右滚动 dx 像素,向下滚动 dy 像素。两者均可为负数。

滚动后,部件将接收到需要重绘区域的绘制事件。对于Qt已知的不透明部件,这将是新暴露的部分。例如,如果将不透明部件向左滚动8像素,则只需更新右侧8像素宽的带状区域。

由于部件默认通过其父级传播内容,您需要设置 autoFillBackground 属性,或使用 setAttribute() 设置 Qt::WA_OpaquePaintEvent 属性,以使部件不透明。

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

参阅

透明度双缓冲

setAcceptDrops(on)#
参数:

on – bool

参阅

acceptDrops()

属性 acceptDrops 的设置器。

setAccessibleDescription(description)#
参数:

description – str

属性 accessibleDescription 的设置器。

setAccessibleName(name)#
参数:

name – str

设置属性accessibleName的赋值器。

setAttribute(arg__1[, on=true])#
参数:

如果on为true,则在当前小部件上设置属性attribute;否则清除属性。

setAutoFillBackground(enabled)#
参数:

enabled – bool

设置属性autoFillBackground的赋值器。

setBackgroundRole(arg__1)#
参数:

arg__1ColorRole

将小部件的背景.role设置为role

背景角色定义了从小部件的 palette 中用于渲染背景的画笔。

如果role是QPalette::NoRole,则小部件将从父控件继承其背景.role。

请注意,样式可以自由选择从调色板中的任何颜色。如果您使用set_backgroundRole()未达到预期的结果,可以修改调色板或设置样式表。

setBaseSize(basew, baseh)#
参数:
  • basew – int

  • baseh – int

这是一个重载的函数。

这对应于setBaseSize(QSize(basew, baseh))。设置了小部件的基本尺寸为宽度basew和高度baseh。

setBaseSize(arg__1)
参数:

arg__1QSize

参阅

baseSize()

设置属性baseSize的赋值器。

setContentsMargins(margins)#
参数:

边界QMargins

这是一个重载的函数。

setContentsMargins 函数设置了围绕小部件内容的边距。

将小部件内容的边界设置为margins中确定的大小。这些边距由布局系统使用,并且子类可以使用它们来指定绘制区域(例如,不包括框架)。

更改边距将触发一个 resizeEvent()

setContentsMargins(left, top, right, bottom)
参数:
  • left – int

  • top – int

  • right – int

  • bottom – int

将小部件内容的边界设置为lefttoprightbottom。这些边距由布局系统使用,并且子类可以使用它们来指定绘制区域(例如,不包括框架)。

更改边距将触发一个 resizeEvent()

setContextMenuPolicy(policy)#
参数:

policyContextMenuPolicy

设置属性的设置器 contextMenuPolicy

setCursor(arg__1)#
参数:

arg__1QCursor

参阅

cursor()

设置属性的设置器 cursor

setDisabled(arg__1)#
参数:

arg__1 – bool

如果disable为真,则禁用小部件输入事件;否则启用输入事件。

请参阅enabled文档以获取更多信息。

setEnabled(arg__1)#
参数:

arg__1 – bool

参阅

isEnabled()

属性 enabled 的设置器。

setFixedHeight(h)#
参数:

h – int

将小部件的最低和最高高度设置为 h,而不改变宽度。为了方便提供。

setFixedSize(w, h)#
参数:
  • w – int

  • h – int

这是一个重载的函数。

将小部件的宽度设置为 w 并将其高度设置为 h

setFixedSize(arg__1)
参数:

arg__1QSize

将小部件的最低和最高尺寸设置为 s,从而阻止其增长或缩小。

这将覆盖由 QLayout 设置的默认尺寸限制。

要取消约束,将尺寸设置为 QWIDGETSIZE_MAX

或者,如果您想使小部件根据其内容具有固定大小,可以调用 setSizeConstraint ( SetFixedSize );

setFixedWidth(w)#
参数:

w – int

将小部件的最低和最高宽度设置为 w,而不改变高度。为了方便提供。

setFocus(reason)#
参数:

reasonFocusReason

将键盘输入焦点切换到该小部件(或其焦点代理),如果该小部件或其父对象是active windowreason 参数将被传递到从该函数发送的任何焦点事件中,它用于解释导致小部件获得焦点的原因。如果窗口未处于活动状态,当窗口变为活动状态时,小部件将被给予焦点。

首先,发送一个即将更改焦点的事件到当前焦点小部件(如果有的话),告知它它即将失去焦点。然后变换焦点,发送一个焦点退出事件给之前具有焦点的小部件,并发送一个焦点进入事件给新项目,告知它刚刚获得了焦点。(如果焦点进入和焦点退出的小部件相同,则不发生任何事情。)

注意

在嵌入式平台上,setFocus() 不会导致输入法打开输入面板。如果您希望这样做,您必须自己向小部件发送一个 QEvent::RequestSoftwareInputPanel 事件。

setFocus() 给予小部件焦点,无论其焦点策略如何,但不会清除任何键盘捕获(请参阅grabKeyboard() )。

请注意,如果小部件处于隐藏状态,它将在显示之前不接受焦点。

setFocus()

这是一个重载的函数。

将键盘输入焦点赋予此控件(或其焦点代理),如果此控件或其父控件是活动窗口。

setFocusPolicy(策略)
参数:

策略 - FocusPolicy

参阅

focusPolicy()

属性 focusPolicyᅟ 的设置器。

setFocusProxy(arg__1)
参数:

arg__1QWidget

将控件的焦点代理设置为控件 w。如果 wNone,则函数将此控件重置为无焦点代理。

一些控件可以有“焦点”,但创建一个子控件,如 QLineEdit,来实际处理焦点。在这种情况下,控件可以将线编辑器设置为焦点代理。

当“此控件”获得焦点时,setFocusProxy 设置将实际获得焦点的控件。如果存在焦点代理,则 setFocus_proxy}hasFocus_proxy} 在焦点代理上操作。如果“此控件”是焦点窗口,那么 setFocusProxy 将焦点移动到新的焦点代理。

参阅

focusProxy()

setFont(arg__1)
参数:

arg__1QFont

参阅

font()

“字体属性”设置器。

setForegroundRole(arg__1)#
参数:

arg__1ColorRole

将小部件的前景角色设置为 role

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

如果 role 为 QPalette::NoRole,则小部件将使用与其背景角色对比的前景角色。

请注意,样式可以自由地从调色板中选择任何颜色。如果您使用 setForegroundRole() 没有达到预期的结果,可以修改调色板或设置样式表。

setGeometry(arg__1)#
参数:

arg__1QRect

参阅

geometry()

“几何形状属性”设置器。

setGeometry(x, y, w, h)
参数:
  • x – int

  • y – int

  • w – int

  • h – int

这是一个重载的函数。

这相当于 setGeometry (QRect(x, y, w, h))。

setGraphicsEffect(effect)#
参数:

effectQGraphicsEffect

setGraphicsEffect 函数用于设置小部件的图形效果。

effect 设置为小部件的效果。如果在此小部件上已经安装了效果,QWidget 将在安装新 effect 之前删除现有效果。

如果 effect 在不同的小部件上安装了,setGraphicsEffect() 将从该小部件中删除效果并将其安装在此小部件上。

QWidget 将拥有 effect 的所有权。

注意

此函数将应用效果并将其应用于自身及其所有子元素。

注意

OpenGL-based小部件(如QGLWidget、QOpenGLWidget和QQuickWidget)不支持图形特效。

setHidden(hidden)#
参数:

hidden – bool

便利函数,相当于将setVisible的值设置为取反的``hidden``。

参阅

isHidden()

setInputMethodHints(hints)#
参数:

hintsInputMethodHint的组合

属性inputMethodHintsᅟ的设置器。

setLayout(arg__1)#
参数:

arg__1QLayout

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

将该小部件的布局管理器设置为layout

如果小部件上已经安装了布局管理器,QWidget将不允许您安装另一个。在您可以通过带有新布局的setLayout调用之前,您必须首先删除现有的布局管理器(由layout()返回)。

如果layout是不同小部件上的布局管理器,setLayout将重新父化布局,使其成为此小部件的布局管理器。

示例

layout = QVBoxLayout()
layout.addWidget(formWidget)
setLayout(layout)

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

QWidget将接管layout

setLayoutDirection(direction)#
参数:

directionLayoutDirection

属性layoutDirectionᅟ的设置器。

setLocale(locale)#
参数:

localeQLocale

参阅

locale()

属性 locale 的设置器。

setMask(arg__1)#
参数:

arg__1QBitmap

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

仅使具有相对应的 1 位的 widget 像素可见。如果区域包括 widget 的 rect() 外的像素,该区域的窗口系统控件可能可见或不可见,这取决于平台。

请注意,如果区域非常复杂,这种效果可能较慢。

以下代码演示如何使用具有 alpha 通道的图像来为 widget 生成遮罩:

topLevelLabel = QLabel()
pixmap = QPixmap(":/images/tux.png")
topLevelLabel.setPixmap(pixmap)
topLevelLabel.setMask(pixmap.mask())

此代码显示的标签使用其中包含的图像进行遮罩,从而产生不规则形状的图像被直接绘制在屏幕上的效果。

遮罩 widget 仅在其可见部分接收鼠标事件。

setMask(arg__1)
参数:

arg__1QRegion

这是一个重载的函数。

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

由于 QRegion 允许创建任意复杂的区域,因此 widget 遮罩可以根据不规则的窗口形状进行调整,甚至允许 widget 在具有孔洞的情况下显示。请注意,如果区域非常复杂,这种效果可能较慢。

Widget 遮罩用于向窗口系统提示,应用程序不希望对遮罩以外的区域进行处理鼠标事件。在大多数系统中,它们还导致粗略的视觉裁剪。为了获得平滑的窗口边缘,请使用透明背景和抗锯齿绘制,如 透明背景 示例所示。

setMaximumHeight(maxh)#
参数:

maxh – int

属性 maximumHeight 的设置器。

setMaximumSize(maxw, maxh)#
参数:
  • maxw – int

  • maxh – int

这是一个重载的函数。

该功能与 setMaximumSize (QSize(maxw, maxh)) 相对应。设置最大宽度为 maxw 和最大高度为 maxh

setMaximumSize(arg__1)
参数:

arg__1QSize

参阅

maximumSize()

是属性 maximumSize 的设置器。

setMaximumWidth(maxw)#
参数:

maxw – int

是属性 maximumWidth 的设置器。

setMinimumHeight(minh)#
参数:

minh – int

是属性 minimumHeight 的设置器。

setMinimumSize(arg__1)#
参数:

arg__1QSize

参阅

minimumSize()

是属性 minimumSize 的设置器。

setMinimumSize(minw, minh)
参数:
  • minw – int

  • minh – int

这是一个重载的函数。

该功能与 setMinimumSize (QSize(minw, minh)) 相对应。设置最小宽度为 minw 和最小高度为 minh

setMinimumWidth(minw)#
参数:

minw – int

是属性 minimumWidth 的设置器。

setMouseTracking(enable)#
参数:

enable – bool

是属性 mouseTracking 的设置器。

setPalette(arg__1)#
参数:

arg__1QPalette

属性 palette 的设置器。

setParent(parent)#
参数:

parentQWidget

将小部件的父级设置为 parent ,并重置窗口标志。小部件会被移动到新父级的 (0, 0) 位置。

如果新的父级小部件在另一个窗口中,被重新父级的小部件及其子项会被添加到新父级小部件的 tab chain 的末尾,保持与先前相同的内部顺序。如果移动的小部件中有键盘焦点,setParent() 会调用 clearFocus()

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

如果“新的”父级小部件是旧父级小部件,此函数不会执行任何操作。

注意

在更改父级时,小部件会变得不可见,即使它之前是可见的。您必须调用 show() 以使小部件再次可见。

注意

您很可能永远不需要此函数。如果您有一个动态更改其内容的窗口,使用 QStackedWidget 会更简单。

setParent(parent, f)
参数:

这是一个重载的函数。

此函数还接受窗口标志, f 作为参数。

setScreen(arg__1)#
参数:

arg__1QScreen

将小部件应显示的屏幕设置为 screen

仅对窗口设置屏幕有意义。如果需要,小部件的窗口将在 screen 上重新创建。

注意

如果屏幕是多屏虚拟桌面的一部分,窗口不会自动移动到 screen 。要相对于屏幕放置窗口,请使用屏幕的 topLeft() 位置。

setShortcutAutoRepeat(id[, enable=true])#
参数:
  • id – int

  • enable – bool

如果 enable 为真,则启用具有给定 id 的快捷键自动重复;否则禁用。

setShortcutEnabled(id[, enable=True])#
参数:
  • id – int

  • enable – bool

如果 enable 为真,则启用具有给定 id 的快捷键;否则禁用快捷键。

注意

通常情况下,您不需要使用这个函数,因为 Qt 的快捷键系统会根据小部件的显示和隐藏以及获得或失去焦点自动启用/禁用快捷键。最好使用 QAction 或 QShortcut 来处理快捷键,因为它们比这个低级函数更容易使用。

setSizeIncrement(arg__1)#
参数:

arg__1QSize

属性 sizeIncrement 的设置器。

setSizeIncrement(w, h)
参数:
  • w – int

  • h – int

这是一个重载的函数。

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

setSizePolicy(horizontal, vertical)#
参数:

这是一个重载的函数。

将小部件的大小策略设置为 horizontalvertical,具有标准拉伸和无高度自适应宽度。

参阅

QSizePolicy()

setSizePolicy(arg__1)
参数:

arg__1QSizePolicy

参阅

sizePolicy()

sizePolicy 属性的设置器。

setStatusTip(arg__1)#
参数:

arg__1 – 字符串

参阅

statusTip()

属性 statusTip 的设置器。

setStyle(arg__1)#
参数:

arg__1QStyle

设置小部件的GUI样式为 style。不转移样式对象的拥有权。

如果没有设置样式,则小部件使用应用程序的样式,即 style()

设置小部件的样式对现有或未来的子小部件没有影响。

注意

此函数特别适用于演示目的,您想展示Qt的样式功能。实际应用程序应避免使用,而应使用一个一致的GUI样式。

注意

Qt样式表目前不支持自定义 `QStyle` 子类。我们计划在未来的某个版本中解决此问题。

setStyleSheet(styleSheet)#
参数:

styleSheet – 字符串

参阅

styleSheet()

属性 styleSheet 的设置器。

静态 setTabOrder(arg__1, arg__2)#
参数:

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

在焦点顺序中将第二个小部件置于第一个小部件之后。

这实际上从其焦点链中删除第二个小部件,将其插入到第一个小部件之后。

请注意,由于第二个小部件的标签顺序已更改,因此应按以下顺序排列链

setTabOrder(a, b) # a to b
setTabOrder(b, c) # a to b to c
setTabOrder(c, d) # a to b to c to d

而不是这样

# WRONG
setTabOrder(c, d) # c to d
setTabOrder(a, b) # a to b AND c to d
setTabOrder(b, c) # a to b to c, but not c to d

如果第一个或第二个有焦点代理,则 setTabOrder() 正确替换代理。

注意

自Qt 5.10开始:如果一个控件拥有焦点代理子控件,它被视为复合控件。当设置一或两个复合控件之间的标签顺序时,每个控件内部的本地标签顺序将被保留。这意味着如果两个控件都是复合控件,则生成的标签顺序将从第一个控件内部的最后一个子控件,到第二个控件内部的第一个子控件。

setTabletTracking(enable)#
参数:

enable – bool

属性tabletTracking的设置器。

setToolTip(arg__1)#
参数:

arg__1 – 字符串

参阅

toolTip()

属性toolTip的设置器。

setToolTipDuration(msec)#
参数:

msec – int

属性toolTipDuration的设置器。

setUpdatesEnabled(enable)#
参数:

enable – bool

属性updatesEnabled的设置器。

setVisible(visible)#
参数:

visible – bool

参阅

isVisible()

属性visible的设置器。

setWhatsThis(arg__1)#
参数:

arg__1 – 字符串

参阅

whatsThis()

属性whatsThis的设置器。

setWindowFilePath(filePath)#
参数:

filePath – str

属性windowFilePath的设置器。

setWindowFlag(arg__1[, on=true])#
参数:

如果 on 为真,则在此小部件上设置窗口标志 flag;否则清除标志。

setWindowFlags(type)#
参数:

typeWindowType 的组合

参阅

windowFlags()

setWindowIcon(icon)#
参数:

iconQIcon

参阅

windowIcon()

属性 windowIcon 的设置器。

setWindowIconText(arg__1)#
参数:

arg__1 – 字符串

属性 windowIconText 的设置器。

setWindowModality(windowModality)#
参数:

windowModalityWindowModality

属性 windowModality 的设置器。

setWindowModified(arg__1)#
参数:

arg__1 – bool

属性 windowModified 的设置器。

setWindowOpacity(level)#
参数:

level – float

setWindowRole(arg__1)#
参数:

arg__1 – 字符串

将窗口的角色设置为 role。这仅对 X11 上的窗口有意义。

参阅

windowRole()

setWindowState(state)#
参数:

stateWindowState 的组合

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

将窗口状态设置为 windowState。窗口状态是 Qt::WindowState: Qt::WindowMinimized、Qt::WindowMaximized、Qt::WindowFullScreen 和 Qt::WindowActive 的 OR 组合。

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

w.setWindowState(w.windowState() ^ Qt.WindowFullScreen)

要恢复并激活最小化的窗口(同时保留其最大化和/或全屏状态),请使用以下

w.setWindowState((w.windowState()  ~Qt.WindowMinimized) | Qt.WindowActive)

调用此函数将隐藏小部件。您必须调用 show() 来再次显示小部件。

注意

在某些窗口系统中,Qt::WindowActive 不是立即生效的,在某些情况下可能会被忽略。

当窗口状态发生变化时,小部件将接收到一个类型为 QEvent::WindowStateChange 的 changeEvent()

参阅

windowState()

setWindowTitle(arg__1)#
参数:

arg__1 – 字符串

参阅

windowTitle()

windowTitle 属性的设置器。

show()#

显示小部件及其子小部件。

对于子窗口,这相当于调用 setVisible (true)。否则,它等价于调用 showFullScreen()showMaximized()setVisible (true),具体取决于平台对窗口标志的默认行为。

showEvent(event)#
参数:

eventQShowEvent

这个事件处理函数可以在子类中被重新实现,以接收通过event参数传递的控件显示事件。

非自发性显示事件在控件显示前立即发送给控件。窗口的自发性显示事件随后发送。

注意:当窗口系统的映射状态改变时,小部件会接收到自发的显示和隐藏事件,例如,当用户最小化窗口时,会接收到自发的隐藏事件,当窗口恢复时,会接收到自发的显示事件。接收到自发的隐藏事件后,小部件仍然被视为在isVisible()意义上的可见。

参阅

visible event() QShowEvent

showFullScreen()#

以全屏模式显示控件。

调用此函数仅影响 窗口 .

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

注意

在全屏模式下,在Windows下运行良好,但在X上可能会有某些问题。这些问题是由于指定X11客户端和窗口管理器之间通信的ICCCM协议的限制造成的。ICCCM根本不理解非装饰全屏窗口的概念。因此,最好的做法是请求无边框窗口,并将其放置并调整大小以填充整个屏幕。这取决于窗口管理器,可能有效也可能无效。无边框窗口是用MOTIF提示请求的,而现代几乎所有的窗口管理器都至少支持部分MOTIF提示。

另一种选择是完全绕过窗口管理器,并使用Qt::X11BypassWindowManagerHint标志创建一个窗口。但这带来了其他严重的问题,例如键盘焦点损坏以及桌面更改或当用户提升其他窗口时的非常奇怪的影响。

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

在macOS上,将窗口显示为全屏会将整个应用程序置于全屏模式,并提供一个专用桌面。当应用程序在全屏模式下运行时显示另一个窗口可能会自动使该窗口也进入全屏模式。为了避免这种情况,在显示另一个窗口之前,通过调用showNormal()或在全屏窗口上调用close()退出全屏模式。

showMaximized()#

显示最大化的小部件。

调用此函数仅影响 窗口 .

在X11上,此函数可能无法与某些窗口管理器正常工作。请参阅窗口几何形状文档以获取解释。

showMinimized()#

以图标形式显示最小化的小部件。

调用此函数仅影响 窗口 .

showNormal()#

在窗口最大化或最小化之后恢复小工具。

调用此函数仅影响 窗口 .

size()#
返回类型::

QSize

属性 size 的获取器。

sizeHint()#
返回类型::

QSize

属性 sizeHint 的获取器。

sizeIncrement()#
返回类型::

QSize

属性 sizeIncrement 的获取器。

sizePolicy()#
返回类型::

QSizePolicy

属性 sizePolicy 的获取器。

stackUnder(arg__1)#
参数:

arg__1QWidget

将小工具放置在父窗口中 w 之下。

要实现此功能,小工具本身和 w 必须是同级的。

参阅

raise() lower()

statusTip()#
返回类型::

str

属性 statusTip 的获取器。

style()#
返回类型::

QStyle

styleSheet()#
返回类型::

str

属性 styleSheet 的获取器。

tabletEvent(event)#
参数:

eventQTabletEvent

此事件处理程序,用于事件 event,可以在子类中重新实现以接收小部件的平板电脑事件。

如果重新实现了此处理程序,如果未处理该事件,请忽略()事件,以便小部件的父级可以将其解释。

默认实现忽略事件。

如果关闭了平板电脑跟踪,只有当笔触碰到平板电脑或至少有一个笔按钮被按下时移动笔触,平板电脑移动事件才会发生。如果启用了平板电脑跟踪,即使笔悬停在平板电脑附近,没有任何按钮被按下,也会发生平板电脑移动事件。

testAttribute(arg__1)#
参数:

arg__1WidgetAttribute

返回类型::

bool

如果在此小部件上设置了属性 attribute,则返回 true;否则返回 false

toolTip()#
返回类型::

str

参阅

setToolTip()

属性 toolTip 的获取器。

toolTipDuration()#
返回类型::

int

属性 toolTipDuration 的获取器。

topLevelWidget()#
返回类型::

QWidget

请使用 window() 代替。

underMouse()#
返回类型::

bool

如果小部件位于鼠标游标下,则返回 true;否则返回 false

此值在拖放操作期间不会正确更新。

ungrabGesture(type)#
参数:

typeGestureType

取消订阅小部件给定的手势类型

unsetCursor()#

重置属性cursorᅟ的函数。

unsetLayoutDirection()#

重置属性layoutDirectionᅟ的函数。

unsetLocale()#

重置属性localeᅟ的函数。

update(arg__1)#
参数:

arg__1QRegion

这是一个重载的函数。

此版本的函数将在小部件内重绘区域 rgn

update(x, y, w, h)
参数:
  • x – int

  • y – int

  • w – int

  • h – int

这是一个重载的函数。

本版本更新小部件内部的一个矩形区域(x, y, w, h)。

update(arg__1)
参数:

arg__1QRect

这是一个重载的函数。

此版本更新小部件内部的一个矩形区域rect

update()

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

此函数不会立即引起重绘;而不是立即重绘,它安排在Qt返回主事件循环时处理的重绘事件。这允许Qt比调用repaint()时更优化速度和减少闪烁。

通常连续多次调用update()只会导致一个paintEvent()调用。

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

参阅

repaint()paintEvent()setUpdatesEnabled()模拟时钟

updateGeometry()#

通知布局系统此小部件已更改并且可能需要更改几何形状。

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

对于明确隐藏的部件,updateGeometry()为空操作。布局系统将在部件显示后立即通知。

updateMicroFocus([query=Qt.ImQueryAll])#
参数:

queryInputMethodQuery

更新小部件的微焦点,并告知输入法由query指定的状态已更改。

updatesEnabled()#
返回类型::

bool

属性updatesEnabled的获取器。

visibleRegion()#
返回类型::

QRegion

返回可发生绘制事件的不遮挡区域。

对于可见小部件,这是其他小部件未覆盖的区域的大致估计;否则,这是一个空区域。

repaint()函数在必要时调用此函数,所以在一般情况下不需要调用它。

whatsThis()#
返回类型::

str

属性whatsThis的获取器。

wheelEvent(event)#
参数:

事件QWheelEvent

此事件处理程序,用于事件 event,可以在子类中重新实现以接收小部件的轮事件。

如果重新实现了此处理程序,如果未处理该事件,请忽略()事件,以便小部件的父级可以将其解释。

默认实现忽略事件。

参阅

event() QWheelEvent

winId()#
返回类型::

WId

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

在原则上具有可移植性,但如果你用它,你可能即将进行非移植操作。请小心。

如果窗口是非原生的(外来的),并且对该窗口调用了 winId(),则会向该窗口提供一个原生句柄。

此值可能在运行时更改。当窗口系统标识符更改时,会向窗口发送类型为 QEvent::WinIdChange 的事件。

参阅

find()

window()#
返回类型::

QWidget

注意

本节包含自动从C++转换为Python的代码片段,可能包含错误。

返回此小部件的窗口,即具有(或可能具有)窗口系统框架的下一级小部件。

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

典型用法是更改窗口标题

aWidget.window().setWindowTitle("New Window Title")

参阅

isWindow()

windowFilePath()#
返回类型::

str

属性 windowFilePathᅟ 的获取器。

windowFlags()#
返回类型::

WindowType 的组合

windowHandle()#
返回类型::

QWindow

如果这是一个本地小部件,则返回相关联的 QWindow。否则返回 null。

本地小部件包括顶级小部件、QGLWidget 以及在它们上调用 winId() 的小部件。

参阅

winId() screen()

windowIcon()#
返回类型::

QIcon

属性 windowIconᅟ 的获取器。

windowIconChanged(icon)#
参数:

iconQIcon

当窗口的图标更改时,会发出此信号,并通过新的 icon 作为参数传入。

属性 windowIconᅟ 的通知信号。

windowIconText()#
返回类型::

str

属性 windowIconTextᅟ 的获取器。

windowIconTextChanged(iconText)#
参数:

iconText – 字符串

当窗口的图标文本更改时发出此信号,将新的 iconText 作为参数。

此信号已废弃。

属性 windowIconTextᅟ 的通知信号。

windowModality()#
返回类型::

WindowModality(窗口模态性)

属性 windowModalityᅟ 的获取器。

windowOpacity()#
返回类型::

浮点数

windowRole()#
返回类型::

str

返回窗口的角色,或一个空字符串。

windowState()#
返回类型::

WindowState 的组合

返回当前窗口状态。窗口状态是 Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen, 和 Qt::WindowActive 的 OR 结合。

windowTitle()#
返回类型::

str

属性 windowTitleᅟ 的获取器。

windowTitleChanged(title)#
参数:

title – 字符串

当窗口的标题更改时发出此信号,将新的 title 作为参数。

属性 windowTitleᅟ 的通知信号。

windowType()#
返回类型::

WindowType(窗口类型)

返回此小部件的窗口类型。这相当于 windowFlags() & Qt::WindowType_Mask。

参阅

窗口标记

x()#
返回类型::

int

属性 xᅟ 的获取器。

y()#
返回类型::

int

属性 yᅟ 的获取器。