- class QWidget#
类
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
摘要#
属性#
acceptDrops
- 是否为此控件启用拖放事件accessibleDescription
- 辅助技术看到的控件描述accessibleName
- 辅助技术看到的控件名称autoFillBackground
- 是否自动填充控件背景baseSize
- 控件的基大小childrenRect
- 控件子项的边界矩形childrenRegion
- 控件子项占用的组合区域contextMenuPolicy
- 控件如何显示上下文菜单cursor属性
- 此小部件的游标形状enabled属性
- 小部件是否启用focus属性
- 是否该小部件(或其焦点代理)具有键盘输入焦点focusPolicy属性
- 小部件接受键盘焦点的处理方式font属性
- 当前设置于小部件的字体frameGeometry属性
- 小部件相对于其父元素的几何形状,包括任何窗口边框frameSize属性
- 小部件的大小,包括任何窗口边框fullScreen属性
- 小部件是否以全屏模式显示geometry属性
- 小部件相对于其父元素的几何形状,不包含窗口边框height属性
- 小部件的高度,不包括任何窗口边框inputMethodHints属性
- 小部件具有哪些输入方法特定提示isActiveWindow属性
- 是否此小部件的窗口是活动窗口layoutDirection属性
- 此小部件的布局方向locale属性
- 小部件的区域设置maximized属性
- 是否此小部件已最大化maximumHeight属性
- 小部件的最大高度(以像素为单位)maximumSize属性
- 小部件的最大尺寸(以像素为单位)maximumWidth属性
- 小部件的最大宽度(以像素为单位)minimized属性
- 是否此小部件已最小化(图标化)minimumHeight属性
- 以像素为单位的窗口小部件的最小高度minimumSize属性
- 窗口小部件的最小尺寸minimumSizeHint属性
- 窗口小部件推荐的最小尺寸minimumWidth属性
- 以像素为单位的窗口小部件的最小宽度modal属性
- 窗口小部件是否为模态窗口mouseTracking属性
- 是否为窗口小部件启用鼠标跟踪normalGeometry属性
- 当窗口小部件作为一个正常(非最大化或全屏)的顶级窗口显示时的几何形状palette属性
- 窗口小部件的调色板pos属性
- 窗口小部件在其父窗口中的位置rect属性
- 窗口小部件的内部几何形状,不包括任何窗口框架size属性
- 窗口小部件的尺寸,不包括任何窗口框架sizeHint属性
- 窗口小部件的推荐尺寸sizeIncrement属性
- 窗口小部件的尺寸增量sizePolicy属性
- 窗口小部件的默认布局行为statusTip属性
- 窗口小部件的状态提示styleSheet属性
- 窗口小部件的样式表tabletTracking属性
- 是否为窗口小部件启用平板电脑跟踪toolTip属性
- 窗口小部件的工具提示toolTipDuration属性
- 窗口小部件的工具提示持续时间updatesEnabled属性
- 是否启用更新visible属性
- 小部件是否可见whatsThis属性
- 小部件的“这是什么”帮助文本width属性
- 小部件的宽度,不包括任何窗口框架windowFilePath属性
-与小部件相关联的文件路径windowIcon属性
- 小部件的图标windowIconText属性
-显示在最小化窗口图标上的文本windowModality属性
-由模态小部件阻塞的窗口windowModified属性
-窗口中显示的文档是否有未保存的更改windowOpacity属性
-窗口的不透明度级别windowTitle属性
- 窗口标题(标题栏)x属性
-小部件相对于其父对象及其窗口框架的x坐标y属性
-小部件相对于其父对象及其窗口框架的y坐标
方法#
def
__init__()
def
acceptDrops()
def
accessibleName()
def
actions()
def
activateWindow()
def
addAction()
定义
addActions()
定义
adjustSize()
定义
baseSize()
定义
childAt()
定义
clearFocus()
定义
clearMask()
定义
create()
定义
cursor()
定义
destroy()
定义
focusProxy()
定义
font()
定义
fontInfo()
定义
frameSize()
定义
geometry()
定义
grab()
定义
grabMouse()
定义
hasFocus()
定义
isEnabled()
def
isFullScreen()
def
isHidden()
def
isLeftToRight()
def
isMaximized()
def
isMinimized()
def
isModal()
def
isRightToLeft()
def
isTopLevel()
def
isVisible()
def
isVisibleTo()
def
isWindow()
def
layout()
def
locale()
def
mapFrom()
def
mapFromGlobal()
def
mapFromParent()
def
mapTo()
def
mapToGlobal()
def
mapToParent()
def
mask()
def
maximumHeight()
def
maximumSize()
定义
move()
定义
palette()
定义
pos()
定义
rect()
定义
render()
定义
repaint()
定义
resize()
定义
screen()
定义
scroll()
定义
setCursor()
定义
setFocus()
定义
setFont()
定义
setLayout()
定义
setLocale()
定义
setMask()
定义
setPalette()
定义
setParent()
定义
setScreen()
定义
setStyle()
定义
setToolTip()
定义
size()
定义
sizePolicy()
定义
stackUnder()
定义
statusTip()
定义
style()
定义
styleSheet()
定义
toolTip()
定义
underMouse()
定义
update()
定义
whatsThis()
定义
winId()
定义
window()
定义
windowIcon()
定义
windowRole()
定义
windowType()
定义
x()
定义
y()
虚函数#
def
closeEvent()
def
dragEnterEvent()
def
dragLeaveEvent()
def
dragMoveEvent()
def
dropEvent()
def
enterEvent()
def
focusInEvent()
def
focusOutEvent()
def
heightForWidth()
def
hideEvent()
def
keyPressEvent()
def
leaveEvent()
def
mouseMoveEvent()
def
moveEvent()
定义
paintEvent()
定义
setVisible()
定义
showEvent()
定义
sizeHint()
定义
wheelEvent()
槽(Slots)#
定义
close()
定义
hide()
定义
lower()
定义
raise_()
定义
repaint()
定义
setEnabled()
定义
setFocus()
定义
setHidden()
定义
show()
定义
showNormal()
定义
update()
信号#
静态函数#
注意
本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告诉我们
详细描述#
小部件是用户界面的原子:它从窗口系统接收鼠标、键盘和其他事件,并在屏幕上绘制自身的表示。每个小部件都是矩形的,并按 Z 轴顺序排序。一个小部件被其父级和前方的小部件剪切。
未嵌入父小部件的小部件称为窗口。通常,窗口有一个框架和标题栏,尽管也可以使用合适的窗口标志创建不带此类装饰的窗口。在 Qt 中,
QMainWindow
和QDialog
的各种子类是最常见的窗口类型。每个小部件的构造函数接受一个或两个标准参数
QWidget *parent = nullptr
是新小部件的父级。如果它是None
(默认值),则新小部件将是一个窗口。如果不是,它将是 parent 的子级,并由 parent 的几何形状限制(除非您指定 Qt::Window 作为窗口标志)。Qt::WindowFlags f = { }
(如果可用)设置窗口标志;默认设置适用于大多数小部件,但要获取,例如,没有窗口系统框架的窗口,您必须使用特殊的标志。
QWidget
具有众多成员函数,但其中一些函数的直接功能较少;例如,QWidget
拥有字体属性,但它从不自行使用这个属性。存在许多提供实际功能的子类,例如QLabel
,QPushButton
,QListWidget
和QTabWidget
。顶级和子小部件#
没有父小部件的小部件始终是独立窗口(顶级小部件)。对于这些小部件,使用
setWindowTitle()
和setWindowIcon()
来分别设置标题栏和图标。非窗口小部件是子小部件,显示在其父小部件内。Qt 中的大多数小部件主要用于作为子小部件使用。例如,可以将按钮显示为顶级窗口,但大多数人更喜欢将按钮放在其他小部件中,例如
QDialog
。上面的图示显示了一个
QGroupBox
小部件被用于在QGridLayout
提供的布局中包含各种子小部件。标记了QLabel
子小部件的外边缘以表示它们的完整大小。如果您想使用
QWidget
来包含子小部件,通常您希望向父QWidget
添加一个布局。更多详细信息,请参阅 布局管理。复合小部件#
当一个小部件用作容器来分组多个子小部件时,它被称为复合小部件。这些可以由具有所需视觉属性的小部件构造而成 - 例如,通过
QFrame
- 并向其中添加子小部件,通常由布局进行管理。通过继承标准小部件(如
QWidget
或QFrame
)并在子类构造函数中添加必要的布局和子小部件,也可以创建复合小部件。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(用于移动键盘焦点),并将大部分其他事件传递给上面的某些更专业的事件处理器。事件及其传递机制在《事件系统》中进行了介绍。
函数和属性组#
小部件样式表#
除了每个平台的标准小部件样式外,还可以根据样式表中的规则对小部件进行样式化。此功能允许您自定义特定小部件的外观,以便用户了解其用途。例如,可以将按钮以特定方式样式化,以指示它执行破坏性操作。
在 Qt 样式表 文档中对小部件样式表的用法进行了更详细的描述。
透明度和双缓冲#
QWidget
自动双缓冲其绘制,因此不需要在paintEvent()
中编写双缓冲代码以避免闪烁。只要未设置 Qt::WA_PaintOnScreen,父小部件的内容就会默认传播到其每个子小部件。自定义小部件可以编写以利用此功能,通过更新不规则区域(以创建非矩形子小部件)或使用具有不足全alpha组件的颜色进行绘制。以下图表显示了如何调整自定义小部件的属性和属性以实现不同的效果。
在上图中,一个半透明矩形子小部件(有区域被移除)被构造并添加到父小部件中(一个显示位图的
QLabel
)。然后设置不同的属性和widget属性以获得不同的效果。左侧小部件没有设置任何附加属性或小部件属性。默认状态适用于大多数具有透明度、不规则形状或未用不透明画笔覆盖整个区域的自定义小部件。
中心小部件设置了
autoFillBackground
属性。此属性用于依赖于小部件提供默认背景的自定义小部件,且这些小部件未用不透明画笔覆盖其整个区域。右侧小部件设置了Qt::WA_OpaquePaintEvent小部件属性。这表示小部件将以不透明颜色覆盖其整个区域。小部件的区域 initially 将未初始化,在图中用表示的红色对角网格图案表示,该图案穿透已覆盖的区域。
为了快速更新具有简单背景颜色的自定义小部件,例如实时绘图或图表小部件,最好定义一个合适的背景颜色(使用
setBackgroundRole()
与QPalette::Window角色),设置autoFillBackground
属性,并且在小部件的paintEvent()
中仅实现必要的绘图功能。为了快速更新经常用不透明内容覆盖整个区域的自定义小部件,例如视频流小部件,最好设置小部件的Qt::WA_OpaquePaintEvent属性,避免与重绘小部件背景相关的任何不必要的开销。
如果小部件同时设置了Qt::WA_OpaquePaintEvent小部件属性以及
autoFillBackground
属性,Qt::WA_OpaquePaintEvent属性将具有优先权。根据您的需求,您应该选择其中之一。父小部件的内容也被传播到标准Qt小部件。如果父小部件以非标准方式装饰,可能会导致一些意外结果,如图表中所示。
在不使用类继承的情况下定制标准Qt小部件的绘图行为的作用域比自定义小部件略小。通常,可以设置其
autoFillBackground
属性,以达到标准小部件所需的外观。创建半透明窗口#
您可以在支持组合的窗口系统上创建具有半透明区域的窗口。
要在顶级小部件中启用此功能,请使用
setAttribute()
设置其Qt::WA_TranslucentBackground属性,并确保使用非不透明颜色在其部分透明的区域上绘画背景。平台说明
X11:此功能依赖于使用支持ARGB视觉和组合窗口管理器的X服务器。
Windows:小部件需要设置Qt::FramelessWindowHint窗口标志才能使透明度生效。
macOS:小部件需要设置Qt::FramelessWindowHint窗口标志才能使透明度生效。
原生日志与外部日志#
外部小部件对于窗口系统来说是未知的。它们没有与小部件相关联的本地窗口句柄。此功能显著加快了小部件的绘制、调整大小和去除闪烁。
如果您需要具有原生窗口的旧行为,请选择以下选项之一
在您的环境中使用
QT_USE_NATIVE_WINDOWS=1
。在您的应用程序上设置 Qt::AA_NativeWindows 属性。所有小部件将变为原生小部件。
在小部件上设置 Qt::WA_NativeWindow 属性:该小部件自身及其所有祖先将变为原生(除非设置了 Qt::WA_DontCreateNativeAncestors)。
调用
winId
以强制原生窗口(这暗示了 3)。将 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
。参阅
透明度 和 双缓冲
该属性保持小部件的基本尺寸。
基本尺寸用于计算如果小部件定义了
sizeIncrement()
的合适小部件尺寸。默认情况下,对于新创建的小部件,此属性包含具有零宽度和高度的尺寸。
- 访问函数
该属性保持小部件子项的边界矩形。
隐藏的子项不包括在内。
默认情况下,对于没有子项的小部件,此属性包含一个位于原点的零宽度和高度的矩形。
- 访问函数
该属性保持小部件子项所占用区域的组合。
隐藏的子项不包括在内。
默认情况下,对于没有子项的小部件,此属性包含一个空区域。
- 访问函数
- 属性 contextMenuPolicy: Qt.ContextMenuPolicy#
该属性保持小部件显示上下文菜单的方式。
此属性的默认值是 Qt::DefaultContextMenu,这意味着会调用
contextMenuEvent()
处理器。其他值包括 Qt::NoContextMenu,Qt::PreventContextMenu,Qt::ActionsContextMenu,和 Qt::CustomContextMenu。使用 Qt::CustomContextMenu,会发出customContextMenuRequested()
信号。注意
本节包含自动从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)
。如果小部件有焦点代理,则焦点策略将传播到它。
此属性表示当前为小部件设置的字体。
此属性描述小部件请求的字体。字体被用于小部件样式在渲染标准组件时,也是确保自定义小部件与平台本地外观和感觉保持一致的手段。通常,不同的平台或不同的样式为应用程序定义不同的字体。
当您将新字体分配给小部件时,此字体属性与默认字体合并形成小部件的最终字体。您可以通过调用
fontInfo()
来获取小部件最终字体的副本。最终字体也用于初始化 QPainter 的字体。默认值取决于系统环境。
QApplication
维护一个系统/主题字体,用于所有小部件的默认字体。某些类型的小部件也可能有特定的字体默认值。您也可以通过传递自定义字体和小部件的名称到setFont()
来自己定义小部件的默认字体。最后,字体将与 Qt 的字体数据库匹配以找到最佳匹配。QWidget
会将显式的字体属性从父元素传播到子元素。如果您更改某个特定字体属性并将其分配给小部件,该属性将传播到所有子小部件,覆盖该属性的任何系统默认值。请注意,字体默认情况下不支持传播到窗口(除非启用 Qt::WA_WindowPropagation 属性)。QWidget
的字体传播与其调色板传播类似。当前样式用于渲染所有标准 Qt 小部件的内容,可以自由选择使用小部件字体,在某些情况下,也可以忽略它(部分或全部)。特别是像 GTK 样式、Mac 样式和 Windows Vista 样式这样的特定样式会对小部件字体进行特殊修改以匹配平台的原生外观和感觉。因此,将属性分配给小部件的字体并不保证会改变小部件的外观。相反,您可以选择应用一个 styleSheet 。
该属性持有相对于其父元素的控件几何形状,包括任何窗口框架。
有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
参阅
- 访问函数
该属性包含带有窗口边框的小部件的大小。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
- 访问函数
- 属性 fullScreen: bool#
该属性包含小部件是否以全屏模式显示。
在全屏模式下,小部件占用整个屏幕区域,不显示窗口装饰项,例如标题栏。
默认情况下,此属性为
false
。参阅
windowState()
minimized
maximized
- 访问函数
该属性包含小部件相对于其父元素以及不包括窗口边框的几何形状。
当更改几何形状时,如果小部件是可见的,它将立即接收到一个移动事件(
moveEvent()
)和/或一个调整大小事件(resizeEvent()
)。如果小部件当前不可见,则可以在它显示之前保证接收到适当的事件。如果尺寸组件超出由
minimumSize()
和maximumSize()
定义的范围内,则对其进行调整。注意
在
resizeEvent()
或moveEvent()
中调用 setGeometry() 可能会导致无限递归。有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
- 访问函数
- 属性height: int#
此属性存储了不包括任何窗口框架的小部件的高。
有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
访问函数
- 属性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。
除非已设置特殊的locale,否则此locale将由父控件或(如果是顶级widget),默认locale。
如果小部件显示日期或数字,这些应使用小部件的locale进行格式化。
参阅
setDefault()
- 属性maximized:bool#
此属性存储此widget是否已最大化。
该属性仅对窗口相关。
注意
由于一些窗口系统的限制,这并不总是报告预期的结果(例如,如果用户通过X11窗口管理器最大化窗口,Qt无法从其他任何调整大小时区分出来)。这预计将在窗口管理器协议发展过程中得到改善。
默认情况下,此属性为
false
。参阅
windowState()
showMaximized()
visible
show()
hide()
showNormal()
minimized
- 访问函数
- 属性maximumHeight:int#
此属性用于保存小部件的最大高度(像素为单位)。
此属性与
maximumSize
属性保持一致。默认情况下,此属性包含值 16777215。
此属性用于保存小部件的最大尺寸(像素为单位)。
小部件的尺寸不能被调整到大于最大小部件尺寸的大小。
默认情况下,此属性包含宽度与高度值均为 16777215 的大小。
- 属性maximumWidthᅟ: int#
此属性用于保存小部件的最大宽度(像素为单位)。
此属性与
maximumSize
属性保持一致。默认情况下,此属性包含值 16777215。
- 属性minimizedᅟ: bool#
此属性用于保存此小部件是否已最小化(图标化)。
该属性仅对窗口相关。
默认情况下,此属性为
false
。参阅
showMinimized()
visible
show()
hide()
showNormal()
maximized
- 访问函数
- 属性minimumHeight: int#
此属性以像素为单位保存小部件的最小高度。
此属性对应于由
minimumSize
属性持有的高度。默认情况下,此属性的值为 0。
此属性保存小部件的最小尺寸。
小部件的尺寸不能缩小到小于最小小部件尺寸。如果当前尺寸较小,则将小部件的尺寸强制设置为最小尺寸。
由此函数设置的最低大小将覆盖由
QLayout
定义的最低大小。要取消设置最小大小,请使用QSize(0, 0)
的值。默认情况下,此属性包含一个宽度为 0,高度为 0 的大小。
此属性保留小部件的建议最小尺寸。
如果此属性的值为无效大小,则不推荐最小大小。
如果没有此小部件的布局,minimumSizeHint() 的默认实现会返回一个无效大小,否则返回布局的最小大小。大多数内置控件重新实现了 minimumSizeHint()。
QLayout
将不会将小部件缩放到小于最小大小提示的尺寸,除非设置了minimumSize()
或大小策略设置为 QSizePolicy::Ignore。如果设置了minimumSize()
,则最小大小提示将被忽略。- 访问函数
- 属性minimumWidth: int#
此属性包含小部件的最小宽度(以像素为单位)。
此属性对应于
minimumSize
属性中的宽度。默认情况下,此属性的值为 0。
- 属性modal: bool#
此属性表示小部件是否为模态小部件。
此属性仅在窗口中有意义。模态小部件阻止所有其他窗口中的小部件接收任何输入。
默认情况下,此属性为
false
。- 访问函数
- 属性mouseTracking: bool#
此属性表示是否已为小部件启用鼠标跟踪。
如果禁用了鼠标跟踪(默认值),则只有当鼠标移动时至少有一个鼠标按钮被按下时,小部件才会接收到鼠标移动事件。
如果启用了鼠标跟踪,小部件在不需要按按钮的情况下也会接收到鼠标移动事件。
此属性包含将作为常规(非最大化或全屏)顶级小部件显示时的 widget 几何形状。
如果 widget 已经处于此状态,则正常几何形状将反映 widget 当前的
geometry()
。对于子 widget,此属性始终包含空矩形。
默认情况下,此属性包含空矩形。
- 访问函数
此属性包含 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”等属性来自定义小部件的调色板。
此属性包含小部件在其父小部件内的位置。
如果小部件是一个窗口,该位置是桌面上的小部件位置,包括其框架。
在更改位置时,如果小部件是可见的,它将立即收到移动事件(
moveEvent()
)。如果小部件当前不可见,它保证在显示之前收到事件。默认情况下,此属性包含一个参考原点的位置。
注意
在
moveEvent()
中调用 move() 或setGeometry()
可能会导致无限递归。有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
注意
并不是所有的窗口管理器都支持设置或查询顶级窗口位置。在这样一个系统上,程序移动窗口可能没有任何效果,且可能返回当前位置的虚假值,例如
QPoint(0, 0)
。参阅
此属性保存小部件的内部几何形状,不包括任何窗口框架。
rect属性等于QRect(0, 0,
width()
,height()
)。有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
参阅
- 访问函数
此属性保存小部件的大小,不包括任何窗口框架。
如果在小部件正在调整大小时它变得可见,它将立即收到一个resize事件(
resizeEvent()
)。如果小部件当前不可见,则保证在它显示前接收事件。如果它位于
minimumSize()
和maximumSize()
定义的范围内,则将调整大小。默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
注意
在
resizeEvent()
内部调用resize()或setGeometry()
可能会导致无限递归。注意
将大小设置为
QSize(0, 0)
将导致小部件未显示在屏幕上。这也适用于窗口。此属性保存组件的建议大小。
如果此属性的值为无效大小,则不推荐任何大小。
sizeHint()的默认实现如果没有布局,则返回无效大小,否则返回布局的首选大小。
- 访问函数
注意
本节包含自动从C++转换为Python的代码片段,可能包含错误。
此属性保存组件的大小增量。
当用户调整窗口大小时,大小将以sizeIncrement()为步长移动。
width()
像素水平移动,height()
像素垂直移动,以baseSize()
为基准。首选组件大小为非负整数和j。width = baseSize().width() + i * sizeIncrement().width() height = baseSize().height() + j * sizeIncrement().height()
请注意,虽然您可以设置所有组件的大小增量,但它仅影响窗口。
默认情况下,此属性包含一个宽度为 0,高度为 0 的大小。
- propertysizePolicy:QSizePolicy#
此属性保存组件的默认布局行为。
如果有
QLayout
管理此组件的子组件,则使用该布局指定的尺寸策略。如果没有这样的QLayout
,则使用此函数的结果。默认策略是“首选/首选”,这意味着小部件可以自由调整大小,但倾向于采用
sizeHint()
返回的大小。按钮式小部件将大小策略设置为指定它们可以水平拉伸,但垂直尺寸固定。这同样适用于编辑框控件(如QLineEdit
、QSpinBox
或可编辑的QComboBox
)和其他水平定位的小部件(如QProgressBar
)。QToolButton
通常为正方形,因此它们允许两个方向的扩展。支持不同方向的小部件(如QSlider
、QScrollBar
或 QHeader )仅指定相应方向的拉伸。可以提供滚动条的小部件(通常是QScrollArea
的子类)往往指定它们可以使用额外的空间,并且可以应对小于sizeHint()
的情况。- property statusTipᅟ: str#
此属性存储小部件的状态提示。
默认情况下,此属性包含一个空字符串。
- property styleSheetᅟ: str#
此属性存储小部件的样式表。
样式表包含对控件样式的自定义描述,详情请参阅Qt 样式表文档。
自Qt 4.5以来,Qt样式表完全支持macOS。
- 属性 tabletTracking: bool#
此属性表示是否为控件启用平板电脑跟踪。
如果禁用平板电脑跟踪(默认),则控件仅在笔触平板电脑或至少有一个笔触按钮被按下且笔触正在移动时接收平板电脑移动事件。
如果启用平板电脑跟踪,控件即使在悬浮靠近之时也会接收平板电脑移动事件。这在监视位置以及如旋转和倾斜等辅助属性,以及提供UI反馈时非常有用。
- 属性 toolTip: str#
此属性包含了控件的工具提示。
请注意,默认情况下,只有是活动窗口子类的控件的工具提示才会显示。您可以通过在`window`上设置属性 Qt::WA_AlwaysShowToolTips 来更改此行为,而不是在具有工具提示的控件上设置。
如果您想控制工具提示的行为,可以拦截 `event()` 函数并捕获 QEvent::ToolTip 事件(例如,如果您想自定义工具提示应显示的区域)。
默认情况下,此属性包含一个空字符串。
- 访问函数
- 属性 toolTipDuration: int#
此属性包含了控件的工具提示持续时间。
指定工具提示显示的持续时间(以毫秒为单位)。如果值为 -1(默认),则持续时间根据工具提示的长度计算。
参阅
- 属性 updatesEnabled: bool#
注意
本节包含自动从C++转换为Python的代码片段,可能包含错误。
该属性表示是否启用更新。
启用的更新控件会接收绘制事件并有一个系统背景;禁用的控件则不会。这也意味着,如果禁用了更新,调用
update()
和repaint()
没有任何效果。默认情况下,此属性为 true。
通常使用
setUpdatesEnabled()
来禁用更新以避免屏幕闪烁,例如在执行大范围更改时。在 Qt 中,控件通常不会产生屏幕闪烁,但在 X11 中,当控件被隐藏而其他控件尚未替换它们时,服务器可能会清除屏幕上的区域。禁用更新可以解决这个问题。示例
setUpdatesEnabled(False) bigVisualChanges() setUpdatesEnabled(True)
禁用控件会隐式地禁用其所有子控件。启用控件会启用所有子控件(除了顶层控件或已被显式禁用的控件)。重新启用更新会隐式地调用
update()
用于该控件。参阅
- 属性 visible: bool#
该属性表示该控件是否可见。
调用 setVisible(true) 或
show()
将控件设置为可见状态,如果控件的所有父控件直到窗口都是可见的。如果一个祖先不可见,控件不会变得可见,直到所有祖先都显示出来。如果控件的大小或位置已更改,Qt 保证控件会在显示前获得移动和调整大小事件。如果控件尚未调整大小,Qt 将使用adjustSize()
将控件的大小调整为有用的默认值。调用 setVisible(false) 或
hide()
显式隐藏控件。一个显式隐藏的控件永远不会变得可见,即使所有祖先都变得可见,除非你显示它。当控件的可见状态改变时,控件会接收到显示和隐藏事件。在隐藏和显示事件之间,不需要浪费 CPU 循环来准备或向用户显示信息。例如,一个视频应用可能只是简单地停止生成新帧。
如果控件被屏幕上的其他窗口遮挡,则认为它是可见的。同样适用于最小化的窗口以及存在于另一个虚拟桌面上的窗口(在支持此概念的平台)。当窗口系统的映射状态改变时,控件会接收到自发的显示和隐藏事件,例如当用户最小化窗口时发生自发的隐藏事件,当窗口再次恢复时发生自发的显示事件。
很少需要重新实现 setVisible() 函数。如果需要在显示小部件之前更改一些设置,请使用
showEvent()
代替。如果需要执行一些延时初始化,请注意传递给event()
函数的事件。- 访问函数
- property whatsThisᅟ: str#
此属性包含小部件的“这是什么?”帮助文本。
默认情况下,此属性包含一个空字符串。
- property widthᅟ: int#
此属性包含小部件的宽度(不包括任何窗口框架)。
有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
注意
请不要使用此函数来找到多屏桌面上的屏幕宽度。请参阅 QScreen 获取详细信息。
默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何形状。
访问函数
- property windowFilePathᅟ: str#
此属性包含与该小部件关联的文件路径。
此属性仅对窗口有效。它将文件路径与窗口关联。如果您设置了文件路径,但未设置窗口标题,Qt 将使用 QFileInfo::fileName() 获取的指定路径的文件名设置为窗口标题。
如果在任何时候设置了窗口标题,则窗口标题将具有优先级,并将显示文件路径字符串。
此外,在macOS上,这还有一个额外的优点,即它为窗口设置代理图标,前提是文件路径存在。
如果没有设置文件路径,则此属性包含一个空字符串。
默认情况下,此属性包含一个空字符串。
此属性包含小部件的图标。
此属性仅适用于窗口。如果没有设置图标,则 windowIcon() 返回应用程序图标 (QApplication::windowIcon())。
- 属性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()]])#
- 参数:
parent –
QWidget
f – 组合
WindowType
构建一个widget,它是
parent
的子节点,并且设置了widget标记为f
。如果
parent
是None
,新的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])#
- 参数:
icon –
QIcon
text – 字符串
receiver –
QObject
member – 字符串
类型 –
ConnectionType
- 返回类型::
- addAction(text, receiver, member[, type=Qt.AutoConnection])
- 参数:
text – 字符串
receiver –
QObject
member – 字符串
类型 –
ConnectionType
- 返回类型::
- addAction(text, shortcut, receiver, member[, type=Qt.AutoConnection])
- 参数:
text – 字符串
快捷键 –
QKeySequence
receiver –
QObject
member – 字符串
类型 –
ConnectionType
- 返回类型::
- addAction(text, shortcut)
- 参数:
text – 字符串
快捷键 –
QKeySequence
- 返回类型::
- addAction(text)
- 参数:
text – 字符串
- 返回类型::
- addAction(icon, text, shortcut, receiver, member[, type=Qt.AutoConnection])
- 参数:
icon –
QIcon
text – 字符串
快捷键 –
QKeySequence
receiver –
QObject
member – 字符串
类型 –
ConnectionType
- 返回类型::
- addAction(icon, text, shortcut)
- 参数:
icon –
QIcon
text – 字符串
快捷键 –
QKeySequence
- 返回类型::
- addAction(text, shortcut, callable)
- 参数:
text – 字符串
快捷键 –
QKeySequence
可调用对象 – object
- 返回类型::
- addAction(text, callable)
- 参数:
text – 字符串
可调用对象 – object
- 返回类型::
- addAction(icon, text, shortcut, callable)
- 参数:
icon –
QIcon
text – 字符串
快捷键 –
QKeySequence
可调用对象 – object
- 返回类型::
- 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
的获取器。返回小部件的背景角色。
背景角色定义了从小部件的
palette
中用于渲染背景的画笔。如果没有设置显式的背景角色,则小部件会继承其父小部件的背景角色。
- backingStore()#
- 返回类型::
返回将在此小部件中绘制的小部件的 QBackingStore。
属性
baseSize
的获取器。可以重新实现此事件处理程序以处理状态更改。
此事件中正在更改的状态可以通过提供的
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。
这是一个重载的函数。
返回在 widget 的坐标系中点
p
处可见的子 Widget。- childAt(x, y)
- 参数:
x – int
y – int
- 返回类型::
返回在 widget 的坐标系中位置 (x, y) 处可见的子 Widget。如果没有在指定位置找到可见的子 Widget,则该函数返回 None。
属性
childrenRect
的获取器。属性
childrenRegion
的获取器。- clearFocus()#
从该小部件获取键盘输入焦点。
如果该小部件处于活动焦点状态,会向其发送一个
focusOutEvent
事件,告知它已失去焦点。此小部件必须启用焦点设置以获得键盘输入焦点;即必须调用
setFocusPolicy()
。- clearMask()#
移除由
setMask()
设置的任何遮罩。参阅
- close()#
- 返回类型::
bool
关闭此小部件。如果小部件关闭,返回
true
,否则返回false
。首先向小部件发送一个 QCloseEvent。如果小部件接受关闭事件,它会被
隐藏
。如果它忽略事件,则不会发生任何操作。默认的closeEvent()
实现将接受关闭事件。如果小部件具有 Qt::WA_DeleteOnClose 标志,则也会删除该小部件。无论小部件是否可见,都会向其发送一个关闭事件。
当最后一个可见的主窗口(即无父窗口的窗口)关闭时,会触发 QGuiApplication::lastWindowClosed() 信号,并且该窗口已设置 Qt::WA_QuitOnClose 属性。默认情况下,此属性适用于所有小部件,除了如启动界面、工具窗口和弹出菜单之类的临时窗口。
- closeEvent(event)#
- 参数:
event –
QCloseEvent
当 Qt 从窗口系统接收到对顶层窗口的关闭请求时,事件处理程序会使用给定的
event
被调用。默认情况下,事件被接受,并且窗口将被关闭。您可以重写此函数来改变窗口关闭请求时窗口的响应方式。例如,您可以通过对所有事件调用 ignore() 来防止窗口关闭。
主窗口应用程序通常使用此函数的重写来检查用户的工作是否已保存,并在关闭之前请求权限。
参阅
event()
hide()
close()
QCloseEvent
contentsMargins() 函数返回窗口的内容边距。
返回窗口边距内的区域。
- contextMenuEvent(event)#
- 参数:
event –
QContextMenuEvent
此事件处理程序(针对事件
event
),可以在子类中重写以接收窗口上下文菜单事件。当窗口的
contextMenuPolicy
是 Qt::DefaultContextMenu 时,将调用处理程序。默认实现忽略上下文事件。有关更多详细信息,请参阅 QContextMenuEvent 文档。
参阅
event()
customContextMenuRequested()
- contextMenuPolicy()#
- 返回类型::
属性
contextMenuPolicy
的获取器。- create([arg__1=0[, initializeWindow=true[, destroyOldWindow=true]]])#
- 参数:
arg__1 –
WId
initializeWindow – bool
destroyOldWindow – bool
创建一个新的小部件窗口。
在Qt 5中,参数
window
、initializeWindow
和destroyOldWindow
将被忽略。请使用QWindow::fromWinId
创建一个封装Foreign窗口的QWindow,并将其传递给createWindowContainer
代替。参阅
createWindowContainer
、createWindowContainer
、fromWinId
- createWinId()#
- 静态createWindowContainer(window[, parent=None[, flags=Qt.WindowFlags()]])#
- 参数:
window –
QWindow
parent –
QWidget
flags –
WindowType
的组合
- 返回类型::
创建一个
QWidget
,使得将其嵌入到一个基于QWidget的应用程序中成为可能。窗口容器作为
parent
的子项,并且具有窗口标志flags
被创建。一旦窗口被嵌入到容器中,容器将控制窗口的几何形状和可见性。不推荐对嵌入式窗口显式调用QWindow::setGeometry()、QWindow::show()或QWindow::hide()。
容器将控制
window
的所有权。可以通过调用QWindow::setParent()从窗口容器中移除窗口。窗口容器以原生子窗口的形式附加到其所属的最顶层窗口。当窗口容器用作
QAbstractScrollArea
或QMdiArea
的子窗口时,它将为父窗口链中的每个小部件创建一个原生窗口,以允许在此用例中正确堆叠和剪切。为窗口容器创建原生窗口也允许正确堆叠和剪切。这必须在显示窗口容器之前完成。具有许多原生子窗口的应用程序可能会遭受性能问题。窗口容器有一些已知的限制
堆叠顺序;嵌入的窗口将作为一个不透明框堆叠在窗口层次结构的顶部。多个重叠窗口容器实例的堆叠顺序是未定义的。
渲染集成;窗口容器不与
QGraphicsProxyWidget
、render()
或类似功能互操作。焦点处理;可以允许窗口容器实例具有任何焦点策略,并且它将通过调用 QWindow::requestActivate() 将焦点委托给窗口。然而,从 QWindow 实例返回正常焦点链将取决于 QWindow 实例的实现本身。例如,当进入基于 Qt Quick 的窗口并具有标签键焦点时,很可能进一步的标签点击只会在这个 QML 应用程序内循环。另外,QWindow::requestActivate() 是否实际上提供了窗口焦点是平台相关的。
在基于
QWidget
的应用程序中使用许多窗口容器实例可能会极大地损害应用程序的整体性能。从 6.7 开始,如果窗口属于小部件(即通过调用
windowHandle()
收到的窗口),则不会创建容器。相反,此函数将在将其父窗口设置为父窗口后返回小部件本身。因此,将忽略flags
。换句话说,如果窗口属于小部件,考虑仅将小部件重新附加到parent
,而不是使用此函数。
- cursor()#
- 返回类型::
参阅
属性
cursor
的获取器。此信号在控件
contextMenuPolicy
为Qt::CustomContextMenu并且用户请求在控件上显示上下文菜单时发出。位置pos
是指控件接收到的上下文菜单事件的位置。通常这在使用控件坐标中。例外的是QAbstractScrollArea
及其子类,它们将上下文菜单事件映射到viewport()
的坐标系。- destroy([destroyWindow=true[, destroySubWindows=true]])#
- 参数:
destroyWindow – bool
destroySubWindows – bool
释放窗口系统资源。如果
destroyWindow
为true,则销毁控件窗口。destroy()函数会对所有子控件递归调用自身,为
destroyWindow
参数传递destroySubWindows
。要更精确地控制子控件的销毁,先选择性地销毁子控件。此函数通常从
QWidget
析构函数中调用。- dragEnterEvent(event)#
- 参数:
event –
QDragEnterEvent
当拖动操作进行中且鼠标进入此控件时,会调用此事件处理器。事件作为
event
参数传递。如果忽略此事件,则该控件不会收到任何
drag-move events
。有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。
参阅
QDragQDragEnterEvent
- dragLeaveEvent(event)#
- 参数:
event –
QDragLeaveEvent
当拖动操作进行中且鼠标离开此控件时,会调用此事件处理器。事件作为
event
参数传递。有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。
参阅
QDragQDragLeaveEvent
- dragMoveEvent(event)#
- 参数:
event –
QDragMoveEvent
当拖动操作正在进行时,如果发生以下任何一种情况,则调用该事件处理程序:光标进入此小部件,光标在此小部件内部移动,或者当此小部件具有焦点时,在键盘上按下修改键。事件通过
event
参数传递。有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。
参阅
QDragQDragMoveEvent
- dropEvent(event)#
- 参数:
event –
QDropEvent
当拖动到此小部件时,调用该事件处理程序。事件通过
event
参数传递。有关如何在你的应用程序中提供拖放操作的概述,请参阅拖放文档。
参阅
QDragQDropEvent
- effectiveWinId()#
- 返回类型::
WId
返回小部件的有效窗口系统标识符,即本地父窗口的窗口系统标识符。
如果该小部件是内置的,则此函数返回内置小部件ID。否则,返回第一个内置父小部件的窗口ID,即包含此小部件的最高级小部件。
- ensurePolished()#
确保小部件及其子小部件已经被
QStyle
(即,有合适的字体和调色板)润色。QWidget
在完全构建后,但在第一次显示之前调用此函数。如果您想在执行操作之前确保小部件已被润色,可以调用此函数,例如,在执行小部件的sizeHint()
重写时,可能需要正确的字体大小。请注意,此函数来自于sizeHint()
的默认实现。润色在有所有构造函数(从基类以及从子类)调用之后进行的最终初始化中非常有用。
如果您需要在润色小部件时更改一些设置,请重写event()并处理
QWidget
的event()
和QWidget
的event()
事件类型。- enterEvent(event)#
- 参数:
事件 –
QEnterEvent
该事件处理程序可以在子类中重新实现,以接收在
event
参数中传递的窗口小部件进入事件。当鼠标光标进入窗口小部件时,向小部件发送该事件。
参阅
leaveEvent()
mouseMoveEvent()
event()
返回具有窗口标识符/句柄
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ᅟ
的获取器。- focusPreviousChild()#
- 返回类型::
bool
寻找新控件以提供键盘焦点,适用于Shift+Tab,如果能找到新控件则返回
true
,否则返回false。返回焦点代理,如果没有焦点代理则返回
None
。返回此小部件最后一个被调用过
setFocus
的子小部件。对于顶级小部件,这是当此窗口被激活时将获得焦点的小部件。这不同于
focusWidget()
,它返回当前活动窗口中的焦点小部件。属性 font 的获取器。
返回小部件当前字体的字体信息。相当于
QFontInfo(widget->font())
。- fontMetrics()#
- 返回类型::
返回小部件当前字体的字体度量信息。相当于
QFontMetrics(widget->font())
。返回前景角色。
前景角色定义了从小部件的
palette
中用于绘制前景的颜色。如果没有显式设置前景角色,则函数返回与背景角色形成对比的角色。
属性 frameGeometry 的获取器。
属性
frameSize
的获取器。属性
geometry
的获取器。将小部件绘制到由给定的
rectangle
限制的位图中。如果小部件有子元素,则它们也将被绘制到适当的posit如果指定了一个具有无效大小(默认值)的矩形,则整个小部件将被绘制。
- grabGesture(type[, flags=Qt.GestureFlags()])#
- 参数:
type –
GestureType
flags –
GestureFlag
组合
将小部件订阅给一个具有特定
flags
的gesture
。- grabKeyboard()#
抓取键盘输入。
该小部件在
releaseKeyboard()
被调用之前接收所有键盘事件;其他小部件则完全接收不到键盘事件。鼠标事件不受影响。如果您想抓取鼠标,请使用grabMouse()
。焦点小部件不受影响,除不接收任何键盘事件。
setFocus()
在通常情况下移动焦点,但新的焦点小部件只有在调用releaseKeyboard()
后才会接收键盘事件。如果当前有不同的小部件正在抓取键盘输入,则会首先释放该小部件的抓取。
- grabMouse()#
抓取鼠标输入。
该小部件在调用
releaseMouse()
之前接收所有鼠标事件;其他小部件则完全不接收鼠标事件。键盘事件不受影响。如果需要抓取键盘,请使用grabKeyboard()
。注意
鼠标抓取应用程序的Bug经常锁定终端。请谨慎使用此函数,并在调试时考虑使用
-nograb
命令行选项。在使用 Qt 时通常很少需要抓取鼠标,因为 Qt 能够合理地抓取和释放它。特别是,Qt 在鼠标按钮按下时抓取鼠标,并在最后一个按钮释放后保持它。
注意
只有可见的小部件才能抓取鼠标输入。如果
isVisible()
对小部件返回false
,则该小部件不能调用 grabMouse()。注意
在 Windows 上,当鼠标位于进程拥有的窗口内时,grabMouse() 才起作用。在 macOS 上,只有在鼠标位于该小部件框架内时,grabMouse() 才起作用。
- grabMouse(arg__1)
- 参数:
arg__1 –
QCursor
此函数重载了
grabMouse()
。抓取鼠标输入并更改光标形状。
当鼠标焦点被捕获时,光标将呈现为
cursor
形状,直到调用releaseMouse()
方法()。在此期间,此小部件将是唯一可以接收鼠标事件的小部件。注意
捕获鼠标可能会锁定终端。
- grabShortcut(key[, context=Qt.WindowShortcut])#
- 参数:
key –
QKeySequence
context –
ShortcutContext
- 返回类型::
int
此方法向Qt的快捷键系统中添加一个快捷键,用于在指定的
context
中监视所提供的key
序列。如果context
是Qt::ApplicationShortcut,则快捷键应用于整个应用程序。否则,它可以是此小部件的本地快捷键(Qt::WidgetShortcut)或窗口本身的快捷键(Qt::WindowShortcut)。如果几个小部件捕获了相同的
key
序列,当key
序列发生时,将向适用于该序列且顺序非确定的所有小部件发送QEvent::Shortcut事件,但“ambiguous”标志设置为true。注意
通常,您不需要使用此函数。相反,创建具有所需快捷键序列的QActions(如果您还需要等效的菜单选项和工具栏按钮),或者创建QShortcuts(如果您只需要键序列)。QAction和QShortcut都为您处理所有事件过滤,并提供在用户触发键序列时被触发的信号,因此使用起来比此低级函数要简单得多。
- graphicsEffect()#
- 返回类型::
此函数返回指向小部件图形效果的指针。
如果小部件没有图形效果,则返回None。
- graphicsProxyWidget()#
- 返回类型::
返回图形视图中相应嵌入式小部件的代理小部件;否则返回
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)。注意
- hideEvent(event)#
- 参数:
event –
QHideEvent
此事件处理程序可以作为子类实现,以接收小部件隐藏事件。事件通过
event
参数传入。隐藏事件在小部件被隐藏后立即发送。
注意:当窗口系统的映射状态改变时,小部件会接收到自发的显示和隐藏事件,例如,当用户最小化窗口时,会接收到自发的隐藏事件,当窗口恢复时,会接收到自发的显示事件。接收到自发的隐藏事件后,小部件仍然被视为在
意义上的可见。isVisible()
参阅
visible
事件QHideEvent
- inputMethodEvent(event)#
- 参数:
event –
QInputMethodEvent
此事件处理程序,对于事件
event
,可以在子类中实现以接收输入方法组合事件。当输入方法的状况变化时,会调用此处理程序。注意:当创建自定义文本编辑小部件时,必须使用
setAttribute()
函数显式设置 Qt::WA_InputMethodEnabled 窗口属性,以便接收输入方法事件。默认实现调用 event->ignore()},这拒绝了输入方法事件。有关更多信息,请参阅 QInputMethodEvent 文档。
参阅
event()
QInputMethodEvent
- inputMethodHints()#
- 返回类型::
InputMethodHint
的组合
属性 inputMethodHints 的获取器。
- inputMethodQuery(arg__1)#
- 参数:
arg__1 –
InputMethodQuery
- 返回类型::
对象
此方法仅针对输入小部件。输入法使用它来查询将要支持复杂输入法操作的属性集,例如对周围文本的支持和重转换。
query
指定了查询哪个属性。在
before
指定的动作之前插入动作action
到此小部件的动作列表中。如果before
是None
或before
不是此小部件的有效动作,则附加此动作。QWidget
只应有一个每个动作。将该操作
actions
插入到此小部件操作列表中,位于操作before
之前。如果before
为 None 或before
不是此小部件的有效操作,则附加操作。QWidget
每种操作最多只能有一个。- internalWinId()#
- 返回类型::
WId
- isActiveWindow()#
- 返回类型::
bool
属性
isActiveWindow
的获取器。如果此小部件是给定的
child
的父级(或任何层次的祖父级等),并且两个小部件都在同一窗口中,则返回true
,否则返回false
。- isEnabled()#
- 返回类型::
bool
属性
enabled
的获取器。如果此小部件在
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
的获取器。如果显示
ancestor
,则此小部件将变成可见;否则返回false
。在 true 的情况下,小部件自身或任何祖先(不包括
ancestor
)没有被显式隐藏。即使小部件被屏幕上的其他窗口遮挡,此函数仍将返回 true,但如果移动它们,小部件可能是实际可见的。
isVisibleTo(0) 与
isVisible()
相同。- isWindow()#
- 返回类型::
bool
如果小部件是独立窗口,则返回
true
,否则返回false
。窗口是一种小部件,它不是任何其他小部件的视觉子项,并且通常具有边框和一个
窗口标题
。窗口可以有
父小部件
。然后它将与父小部件分组,并在删除父小部件时删除,当父小部件最小化时也最小化等。如果窗口管理器支持,它还将与其父小部件具有共同的任务栏条目。QDialog
和QMainWindow
小部件默认为窗口,即使构造函数中指定了父小部件也是如此。此行为由 Qt::Window 标志指定。- isWindowModified()#
- 返回类型::
bool
属性
windowModified
的获取器。此事件处理程序用于处理
event
事件,可以在子类中重新实现以接收小部件的关键字按压事件。小部件必须调用
setFocusPolicy()
以接受初始焦点并具有焦点以接收按键事件。如果你重新实现了此处理程序,但如果未对按键采取任何行动,则非常重要,必须调用基类实现。
默认实现在使用者按下 QKeySequence::Cancel(通常为 Escape 键)的键序列时关闭弹出小部件。否则,事件被忽略,以便小部件的父对象可以解释它。
请注意,QKeyEvent 开始时的 isAccepted() == true,因此您不需要调用 QKeyEvent::accept() - 只需在处理按键时不要调用基类实现即可。
此事件处理程序用于处理
event
事件,可以在子类中重新实现以接收小部件的关键字释放事件。小部件必须
接受 focus
初始焦点并拥有 focus
以接收按键释放事件。如果你重新实现了此处理程序,但如果未对按键采取任何行动,则非常重要,必须调用基类实现。
默认实现忽略事件,以便小部件的父对象可以解释它。
请注意,QKeyEvent 开始时的 isAccepted() == true,因此您不需要调用 QKeyEvent::accept() - 只需在处理按键时不要调用基类实现即可。
返回当前占用键盘输入的控件。
如果当前没有控件占用键盘,则返回 None。
返回此控件安装的布局管理器,如果没有安装布局管理器则返回 None。
布局管理器设置布局中添加的子控件的几何形状。
属性
layoutDirection†
的获取器。此事件处理器可以在子类中重新实现,以接收通过
event
参数传递的控件离开事件。当鼠标光标离开控件时,会发送离开事件到控件。
参阅
enterEvent()
mouseMoveEvent()
event()
- locale()†
- 返回类型::
参阅
属性
locale†
的获取器。- lower()#
将小部件降低到父窗口堆叠的最下面。
此调用之后,窗口将视觉上位于(因此被)任何重叠的兄弟窗口之后。
参阅
raise()
stackUnder()
这是一个重载的函数。
将窗口坐标
pos
从parent
的坐标系转换到本窗口的坐标系。必须为非None
,并且必须是调用窗口的父窗口。这是一个重载的函数。
将全局屏幕坐标
pos
转换为窗口坐标。这是一个重载的函数。
将父窗口坐标
pos
转换为窗口坐标。如果窗口没有父窗口,则等同于
mapFromGlobal()
。这是一个重载的函数。
将窗口坐标
pos
转换为parent
坐标系。其中parent
不能为空,且必须是调用窗口的父窗口。这是一个重载的函数。
将窗口坐标
pos
转换为全局屏幕坐标。例如,mapToGlobal(QPointF(0,0))
将给出窗口左上像素的全局坐标。将小部件坐标
pos
转换为父小部件中的坐标。如果没有父小部件,与
mapToGlobal()
相同。这是一个重载的函数。
返回设置在控件上的当前掩码。如果没有设置掩码,返回值将为空区域。
- maximumHeight()#
- 返回类型::
int
属性
maximumHeightᅟ
的获取器。属性
maximumSizeᅟ
的获取器。- maximumWidth()#
- 返回类型::
int
属性
maximumWidthᅟ
的获取器。- minimumHeight()#
- 返回类型::
int
属性
minimumHeightᅟ
的获取器。属性
minimumSizeᅟ
的获取器。属性
minimumSizeHintᅟ
的获取器。- minimumWidth()#
- 返回类型::
int
属性 minimumWidth 的获取器。
- mouseDoubleClickEvent(event)#
- 参数:
event -
QMouseEvent
此事件处理程序负责处理事件
event
,可以在子类中重新实现以接收小部件的双击鼠标事件。默认实现会调用
mousePressEvent()
。注意
除了双击事件外,小部件还会接收到鼠标按下和鼠标释放事件。如果与此小部件重叠的另一个小部件在按下或释放事件时消失,则此小部件仅接收到双击事件。确保应用程序正确解释这些事件是开发者的责任。
返回当前获取鼠标输入的小部件。
如果没有小部件在这个应用程序中当前获取鼠标,返回
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
事件,可以在子类中重写以接收部件的鼠标释放事件。属性
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)#
- 参数:
eventType -
QByteArray
message -
void
- 返回类型::
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 *
返回此小部件的原生父元素,即下一个具有系统标识符的祖先小部件,如果没有原生父元素,则返回
None
。返回此小部件的焦点链中的下一个小部件。
属性
normalGeometry
的获取器。- overrideWindowFlags(type)#
- 参数:
type –
WindowType
的组合
将小部件的窗口标志设置为
flags
,但不会告知窗口系统。- overrideWindowState(state)#
- 参数:
state –
WindowState
的组合
- paintEvent(event)#
- 参数:
event –
QPaintEvent
事件处理程序可以被子类重写以接收在
event
中传递的绘图事件。绘图事件是要求重绘小部件全部或部分内容的方法。它可能由以下原因之一引起
许多小部件在被要求时可以简单地重绘其整个表面,但某些运行缓慢的小部件需要通过仅绘制请求的区域来优化: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。否则,
paintEngine()
永远不会被调用;将使用后端存储。参阅
event
repaint
update
Analog Clock属性
palette
的获取器。返回此部件的父部件,如果没有父部件,则返回
None
。属性
pos
的获取器。previousInFocusChain函数返回当前 widget 的焦点链中的前一个 widget。
- raise_()#
属性
rect
的获取器。- releaseKeyboard()#
释放键盘捕获。
- releaseMouse()#
释放鼠标捕获。
- releaseShortcut(id)#
- 参数:
id – int
从 Qt 的快捷键系统中移除具有给定
id
的快捷键。该 widget 不会再接收 QEvent::Shortcut 事件,除非它有其他具有相同键序列的快捷键。注意
通常不需要使用此函数,因为 Qt 的快捷键系统在父 widget 销毁时会自动移除快捷键。最好使用 QAction 或 QShortcut 来处理快捷键,因为它们比这个低级函数更容易使用。请注意,这操作代价较高。
从该 widget 的动作列表中移除
action
。- render(target[, targetOffset=QPoint()[, sourceRegion=QRegion()[, renderFlags=QWidget.RenderFlags(QWidget.RenderFlag.DrawWindowBackground | QWidget.RenderFlag.DrawChildren)]]])#
- 参数:
target –
QPaintDevice
targetOffset –
QPoint
sourceRegion –
QRegion
renderFlags –
RenderFlag
的组合
注意
本节包含自动从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
targetOffset –
QPoint
sourceRegion –
QRegion
renderFlags –
RenderFlag
的组合
这是一个重载的函数。
将小部件渲染到画家
painter
的 QPainter::device() 中。在渲染时将使用对
painter
应用了变换和设置的。- repaint()#
通过调用
paintEvent()
立即重绘小部件,除非禁用了更新或小部件处于隐藏状态。我们建议在需要立即重绘的情况下才使用 repaint(),例如在动画过程中。在大多数情况下,最好使用
update()
,因为它允许 Qt 优化速度并最小化闪烁。注意
如果您在一个可能被
paintEvent()
调用的函数中调用 repaint(),您可能会遇到无限递归。update() 函数永远不会导致递归。- repaint(arg__1)
- 参数:
arg__1 –
QRect
这是一个重载的函数。
此版本的函数将在小部件内重绘矩形
rect
。- repaint(arg__1)
- 参数:
arg__1 –
QRegion
这是一个重载的函数。
此版本的函数将在小部件内重绘区域
rgn
。- repaint(x, y, w, h)
- 参数:
x – int
y – int
w – int
h – int
这是一个重载的函数。
此版本的函数将在小部件内重绘矩形 (
x
,y
,w
,h
)。如果
w
为负,则替换为width() - x
,如果h
为负,则替换为height() - y
。设置属性
size
的函数。- resize(w, h)
- 参数:
w – int
h – int
这是一个重载的函数。
这对应于 resize(QSize(
w
,h
))).- resizeEvent(event)#
- 参数:
event –
QResizeEvent
这个事件处理可以在子类中重新实现,以接收通过参数
event
传递的窗口部件尺寸改变事件。当调用 resizeEvent() 时,窗口部件已经具有了新的几何形状。旧的大小可以通过 QResizeEvent::oldSize() 获取。在处理尺寸改变事件之后,窗口部件将立即被擦除并接收到一个绘制事件。在处理程序内部不需要(或不应)进行绘图。
参阅
- restoreGeometry(geometry)#
- 参数:
geometry –
QByteArray
- 返回类型::
bool
注意
本节包含自动从C++转换为Python的代码片段,可能包含错误。
从字节码
geometry
中恢复顶层窗口部件的几何形状和状态。成功则返回true
,否则返回false
。如果恢复的几何形状在屏幕外,它将被修改为在可用屏幕几何形状内。
要使用 QSettings 保存的几何形状恢复,可以使用如下代码:
settings = QSettings("MyCompany", "MyApp") myWidget.restoreGeometry(settings.value("myWidget/geometry").toByteArray())
有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
使用
restoreState()
恢复工具栏和停靠小部件的几何形状和状态。- saveGeometry()#
- 返回类型::
注意
本节包含自动从C++转换为Python的代码片段,可能包含错误。
保存顶级窗口部件的当前几何形状和状态。
要保存窗口关闭时的几何形状,可以实施如下关闭事件:
def closeEvent(self, event): settings = QSettings("MyCompany", "MyApp") settings.setValue("geometry", saveGeometry()) QWidget.closeEvent(event)
有关窗口几何形状问题的概述,请参阅 窗口几何形状 文档。
使用
saveState()
保存工具栏和停靠小部件的几何形状和状态。返回部件所在的屏幕。
这是一个重载的函数。
此版本仅滚动
r
,并不移动部件的子项。如果
r
为空或无效,结果将未定义。参阅
- scroll(dx, dy)
- 参数:
dx – int
dy – int
滚动部件及其子项,将其向右滚动
dx
像素,向下滚动dy
像素。两者均可为负数。滚动后,部件将接收到需要重绘区域的绘制事件。对于Qt已知的不透明部件,这将是新暴露的部分。例如,如果将不透明部件向左滚动8像素,则只需更新右侧8像素宽的带状区域。
由于部件默认通过其父级传播内容,您需要设置
autoFillBackground
属性,或使用setAttribute()
设置 Qt::WA_OpaquePaintEvent 属性,以使部件不透明。对于使用内容传播的部件,滚动将导致整个滚动区域更新。
参阅
透明度 和 双缓冲
- setAcceptDrops(on)#
- 参数:
on – bool
属性
acceptDrops
的设置器。- setAccessibleDescription(description)#
- 参数:
description – str
属性
accessibleDescription
的设置器。- setAccessibleName(name)#
- 参数:
name – str
设置属性
accessibleName
的赋值器。- setAttribute(arg__1[, on=true])#
- 参数:
arg__1 –
WidgetAttribute
on – bool
如果
on
为true,则在当前小部件上设置属性attribute
;否则清除属性。- setAutoFillBackground(enabled)#
- 参数:
enabled – bool
设置属性
autoFillBackground
的赋值器。将小部件的背景.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__1 –
QSize
参阅
设置属性
baseSize
的赋值器。这是一个重载的函数。
setContentsMargins
函数设置了围绕小部件内容的边距。将小部件内容的边界设置为
margins
中确定的大小。这些边距由布局系统使用,并且子类可以使用它们来指定绘制区域(例如,不包括框架)。更改边距将触发一个
resizeEvent()
。- setContentsMargins(left, top, right, bottom)
- 参数:
left – int
top – int
right – int
bottom – int
将小部件内容的边界设置为
left
、top
、right
和bottom
。这些边距由布局系统使用,并且子类可以使用它们来指定绘制区域(例如,不包括框架)。更改边距将触发一个
resizeEvent()
。- setContextMenuPolicy(policy)#
- 参数:
policy –
ContextMenuPolicy
设置属性的设置器
contextMenuPolicy
。设置属性的设置器
cursor
。- setDisabled(arg__1)#
- 参数:
arg__1 – bool
如果
disable
为真,则禁用小部件输入事件;否则启用输入事件。请参阅
enabled
文档以获取更多信息。- setEnabled(arg__1)#
- 参数:
arg__1 – bool
参阅
属性
enabled
的设置器。- setFixedHeight(h)#
- 参数:
h – int
将小部件的最低和最高高度设置为
h
,而不改变宽度。为了方便提供。- setFixedSize(w, h)#
- 参数:
w – int
h – int
这是一个重载的函数。
将小部件的宽度设置为
w
并将其高度设置为h
。- setFixedSize(arg__1)
- 参数:
arg__1 –
QSize
将小部件的最低和最高尺寸设置为
s
,从而阻止其增长或缩小。这将覆盖由
QLayout
设置的默认尺寸限制。要取消约束,将尺寸设置为
QWIDGETSIZE_MAX
。或者,如果您想使小部件根据其内容具有固定大小,可以调用
setSizeConstraint
(SetFixedSize
);- setFixedWidth(w)#
- 参数:
w – int
将小部件的最低和最高宽度设置为
w
,而不改变高度。为了方便提供。- setFocus(reason)#
- 参数:
reason –
FocusReason
将键盘输入焦点切换到该小部件(或其焦点代理),如果该小部件或其父对象是
active window
。reason
参数将被传递到从该函数发送的任何焦点事件中,它用于解释导致小部件获得焦点的原因。如果窗口未处于活动状态,当窗口变为活动状态时,小部件将被给予焦点。首先,发送一个即将更改焦点的事件到当前焦点小部件(如果有的话),告知它它即将失去焦点。然后变换焦点,发送一个焦点退出事件给之前具有焦点的小部件,并发送一个焦点进入事件给新项目,告知它刚刚获得了焦点。(如果焦点进入和焦点退出的小部件相同,则不发生任何事情。)
注意
在嵌入式平台上,
setFocus()
不会导致输入法打开输入面板。如果您希望这样做,您必须自己向小部件发送一个 QEvent::RequestSoftwareInputPanel 事件。setFocus()
给予小部件焦点,无论其焦点策略如何,但不会清除任何键盘捕获(请参阅grabKeyboard()
)。请注意,如果小部件处于隐藏状态,它将在显示之前不接受焦点。
注意
如果在可能从
focusOutEvent()
或focusInEvent()
被调用的函数中调用setFocus()
,则可能会导致无限递归。- setFocus()
这是一个重载的函数。
将键盘输入焦点赋予此控件(或其焦点代理),如果此控件或其父控件是活动窗口。
- setFocusPolicy(策略)
- 参数:
策略 -
FocusPolicy
属性
focusPolicyᅟ
的设置器。- setFocusProxy(arg__1)
- 参数:
arg__1 –
QWidget
将控件的焦点代理设置为控件
w
。如果w
是None
,则函数将此控件重置为无焦点代理。一些控件可以有“焦点”,但创建一个子控件,如
QLineEdit
,来实际处理焦点。在这种情况下,控件可以将线编辑器设置为焦点代理。当“此控件”获得焦点时,
setFocusProxy
设置将实际获得焦点的控件。如果存在焦点代理,则setFocus_proxy}
和hasFocus_proxy}
在焦点代理上操作。如果“此控件”是焦点窗口,那么setFocusProxy
将焦点移动到新的焦点代理。参阅
“字体属性”设置器。
将小部件的前景角色设置为
role
。前景角色定义了从小部件的
palette
中用于绘制前景的颜色。如果
role
为 QPalette::NoRole,则小部件将使用与其背景角色对比的前景角色。请注意,样式可以自由地从调色板中选择任何颜色。如果您使用 setForegroundRole() 没有达到预期的结果,可以修改调色板或设置样式表。
“几何形状属性”设置器。
- setGeometry(x, y, w, h)
- 参数:
x – int
y – int
w – int
h – int
这是一个重载的函数。
这相当于
setGeometry
(QRect(x
,y
,w
,h
))。- setGraphicsEffect(effect)#
- 参数:
effect –
QGraphicsEffect
setGraphicsEffect 函数用于设置小部件的图形效果。
将
effect
设置为小部件的效果。如果在此小部件上已经安装了效果,QWidget 将在安装新effect
之前删除现有效果。如果
effect
在不同的小部件上安装了,setGraphicsEffect() 将从该小部件中删除效果并将其安装在此小部件上。QWidget
将拥有effect
的所有权。注意
此函数将应用效果并将其应用于自身及其所有子元素。
- setHidden(hidden)#
- 参数:
hidden – bool
便利函数,相当于将
setVisible
的值设置为取反的``hidden``。参阅
- setInputMethodHints(hints)#
- 参数:
hints –
InputMethodHint
的组合
属性
inputMethodHintsᅟ
的设置器。注意
本节包含自动从C++转换为Python的代码片段,可能包含错误。
将该小部件的布局管理器设置为
layout
。如果小部件上已经安装了布局管理器,
QWidget
将不允许您安装另一个。在您可以通过带有新布局的setLayout
调用之前,您必须首先删除现有的布局管理器(由layout()
返回)。如果
layout
是不同小部件上的布局管理器,setLayout
将重新父化布局,使其成为此小部件的布局管理器。示例
layout = QVBoxLayout() layout.addWidget(formWidget) setLayout(layout)
调用此函数的另一种方法是将在布局的构造函数中传递此小部件。
QWidget
将接管layout
。- setLayoutDirection(direction)#
- 参数:
direction –
LayoutDirection
属性
layoutDirectionᅟ
的设置器。属性
locale
的设置器。注意
本节包含自动从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__1 –
QRegion
这是一个重载的函数。
仅使与
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__1 –
QSize
是属性
maximumSize
的设置器。- setMaximumWidth(maxw)#
- 参数:
maxw – int
是属性
maximumWidth
的设置器。- setMinimumHeight(minh)#
- 参数:
minh – int
是属性
minimumHeight
的设置器。是属性
minimumSize
的设置器。- setMinimumSize(minw, minh)
- 参数:
minw – int
minh – int
这是一个重载的函数。
该功能与
setMinimumSize
(QSize(minw, minh)) 相对应。设置最小宽度为minw
和最小高度为minh
。- setMinimumWidth(minw)#
- 参数:
minw – int
是属性
minimumWidth
的设置器。- setMouseTracking(enable)#
- 参数:
enable – bool
是属性
mouseTracking
的设置器。属性
palette
的设置器。将小部件的父级设置为
parent
,并重置窗口标志。小部件会被移动到新父级的 (0, 0) 位置。如果新的父级小部件在另一个窗口中,被重新父级的小部件及其子项会被添加到新父级小部件的
tab chain
的末尾,保持与先前相同的内部顺序。如果移动的小部件中有键盘焦点,setParent() 会调用clearFocus()
。如果新的父级小部件和旧父级小部件在同一个窗口中,设置父级不会改变标签顺序或键盘焦点。
如果“新的”父级小部件是旧父级小部件,此函数不会执行任何操作。
注意
在更改父级时,小部件会变得不可见,即使它之前是可见的。您必须调用
show()
以使小部件再次可见。- setParent(parent, f)
- 参数:
parent –
QWidget
f – 组合
WindowType
这是一个重载的函数。
此函数还接受窗口标志,
f
作为参数。将小部件应显示的屏幕设置为
screen
。仅对窗口设置屏幕有意义。如果需要,小部件的窗口将在
screen
上重新创建。- setShortcutAutoRepeat(id[, enable=true])#
- 参数:
id – int
enable – bool
如果
enable
为真,则启用具有给定id
的快捷键自动重复;否则禁用。- setShortcutEnabled(id[, enable=True])#
- 参数:
id – int
enable – bool
如果
enable
为真,则启用具有给定id
的快捷键;否则禁用快捷键。注意
通常情况下,您不需要使用这个函数,因为 Qt 的快捷键系统会根据小部件的显示和隐藏以及获得或失去焦点自动启用/禁用快捷键。最好使用 QAction 或 QShortcut 来处理快捷键,因为它们比这个低级函数更容易使用。
属性
sizeIncrement
的设置器。- setSizeIncrement(w, h)
- 参数:
w – int
h – int
这是一个重载的函数。
将 x(宽度)大小增量设置为
w
,将 y(高度)大小增量设置为h
。这是一个重载的函数。
将小部件的大小策略设置为
horizontal
和vertical
,具有标准拉伸和无高度自适应宽度。参阅
QSizePolicy()
- setSizePolicy(arg__1)
- 参数:
arg__1 –
QSizePolicy
参阅
sizePolicy
属性的设置器。- setStatusTip(arg__1)#
- 参数:
arg__1 – 字符串
参阅
属性
statusTip
的设置器。设置小部件的GUI样式为
style
。不转移样式对象的拥有权。如果没有设置样式,则小部件使用应用程序的样式,即
style()
。设置小部件的样式对现有或未来的子小部件没有影响。
注意
此函数特别适用于演示目的,您想展示Qt的样式功能。实际应用程序应避免使用,而应使用一个一致的GUI样式。
- setStyleSheet(styleSheet)#
- 参数:
styleSheet – 字符串
参阅
属性
styleSheet
的设置器。注意
本节包含自动从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
的设置器。属性
toolTip
的设置器。- setToolTipDuration(msec)#
- 参数:
msec – int
属性
toolTipDuration
的设置器。- setUpdatesEnabled(enable)#
- 参数:
enable – bool
属性
updatesEnabled
的设置器。- setVisible(visible)#
- 参数:
visible – bool
参阅
属性
visible
的设置器。- setWhatsThis(arg__1)#
- 参数:
arg__1 – 字符串
参阅
属性
whatsThis
的设置器。- setWindowFilePath(filePath)#
- 参数:
filePath – str
属性
windowFilePath
的设置器。- setWindowFlag(arg__1[, on=true])#
- 参数:
arg__1 –
WindowType
on – bool
如果
on
为真,则在此小部件上设置窗口标志flag
;否则清除标志。- setWindowFlags(type)#
- 参数:
type –
WindowType
的组合
属性
windowIcon
的设置器。- setWindowIconText(arg__1)#
- 参数:
arg__1 – 字符串
属性
windowIconText
的设置器。- setWindowModality(windowModality)#
- 参数:
windowModality –
WindowModality
参阅
属性
windowModality
的设置器。- setWindowModified(arg__1)#
- 参数:
arg__1 – bool
属性
windowModified
的设置器。- setWindowOpacity(level)#
- 参数:
level – float
- setWindowRole(arg__1)#
- 参数:
arg__1 – 字符串
将窗口的角色设置为
role
。这仅对 X11 上的窗口有意义。参阅
- setWindowState(state)#
- 参数:
state –
WindowState
的组合
注意
本节包含自动从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()
。- setWindowTitle(arg__1)#
- 参数:
arg__1 – 字符串
windowTitle
属性的设置器。- show()#
显示小部件及其子小部件。
对于子窗口,这相当于调用
setVisible
(true)。否则,它等价于调用showFullScreen()
、showMaximized()
或setVisible
(true),具体取决于平台对窗口标志的默认行为。- showEvent(event)#
- 参数:
event –
QShowEvent
这个事件处理函数可以在子类中被重新实现,以接收通过
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
的获取器。属性
sizeHint
的获取器。属性
sizeIncrement
的获取器。- sizePolicy()#
- 返回类型::
属性
sizePolicy
的获取器。将小工具放置在父窗口中
w
之下。要实现此功能,小工具本身和
w
必须是同级的。参阅
raise()
lower()
- statusTip()#
- 返回类型::
str
属性
statusTip
的获取器。- styleSheet()#
- 返回类型::
str
属性
styleSheet
的获取器。- tabletEvent(event)#
- 参数:
event –
QTabletEvent
此事件处理程序,用于事件
event
,可以在子类中重新实现以接收小部件的平板电脑事件。如果重新实现了此处理程序,如果未处理该事件,请忽略()事件,以便小部件的父级可以将其解释。
默认实现忽略事件。
如果关闭了平板电脑跟踪,只有当笔触碰到平板电脑或至少有一个笔按钮被按下时移动笔触,平板电脑移动事件才会发生。如果启用了平板电脑跟踪,即使笔悬停在平板电脑附近,没有任何按钮被按下,也会发生平板电脑移动事件。
参阅
event()
setTabletTracking()
QTabletEvent
- testAttribute(arg__1)#
- 参数:
arg__1 –
WidgetAttribute
- 返回类型::
bool
如果在此小部件上设置了属性
attribute
,则返回true
;否则返回false
。- toolTip()#
- 返回类型::
str
参阅
属性
toolTip
的获取器。- toolTipDuration()#
- 返回类型::
int
属性
toolTipDuration
的获取器。请使用
window()
代替。- underMouse()#
- 返回类型::
bool
如果小部件位于鼠标游标下,则返回
true
;否则返回false
。此值在拖放操作期间不会正确更新。
- ungrabGesture(type)#
- 参数:
type –
GestureType
取消订阅小部件给定的
手势
类型- unsetCursor()#
重置属性
cursorᅟ
的函数。- unsetLayoutDirection()#
重置属性
layoutDirectionᅟ
的函数。- unsetLocale()#
重置属性
localeᅟ
的函数。这是一个重载的函数。
此版本的函数将在小部件内重绘区域
rgn
。- update(x, y, w, h)
- 参数:
x – int
y – int
w – int
h – int
这是一个重载的函数。
本版本更新小部件内部的一个矩形区域(
x
,y
,w
,h
)。- update(arg__1)
- 参数:
arg__1 –
QRect
这是一个重载的函数。
此版本更新小部件内部的一个矩形区域
rect
。- update()
除非禁用更新或小部件隐藏,否则更新小部件。
此函数不会立即引起重绘;而不是立即重绘,它安排在Qt返回主事件循环时处理的重绘事件。这允许Qt比调用
repaint()
时更优化速度和减少闪烁。通常连续多次调用update()只会导致一个
paintEvent()
调用。Qt通常在调用
paintEvent()
之前擦除小部件的区域。如果设置了Qt::WA_OpaquePaintEvent小部件属性,则小部件负责用不透明颜色绘制所有像素。参阅
repaint()
paintEvent()
setUpdatesEnabled()
模拟时钟- updateGeometry()#
通知布局系统此小部件已更改并且可能需要更改几何形状。
如果
sizeHint()
或sizePolicy()
已更改,请调用此函数。对于明确隐藏的部件,updateGeometry()为空操作。布局系统将在部件显示后立即通知。
- updateMicroFocus([query=Qt.ImQueryAll])#
- 参数:
query –
InputMethodQuery
更新小部件的微焦点,并告知输入法由
query
指定的状态已更改。- updatesEnabled()#
- 返回类型::
bool
属性
updatesEnabled
的获取器。返回可发生绘制事件的不遮挡区域。
对于可见小部件,这是其他小部件未覆盖的区域的大致估计;否则,这是一个空区域。
repaint()
函数在必要时调用此函数,所以在一般情况下不需要调用它。- whatsThis()#
- 返回类型::
str
属性
whatsThis
的获取器。- wheelEvent(event)#
- 参数:
事件 –
QWheelEvent
此事件处理程序,用于事件
event
,可以在子类中重新实现以接收小部件的轮事件。如果重新实现了此处理程序,如果未处理该事件,请忽略()事件,以便小部件的父级可以将其解释。
默认实现忽略事件。
参阅
event()
QWheelEvent
- winId()#
- 返回类型::
WId
返回窗口的窗口系统标识符。
在原则上具有可移植性,但如果你用它,你可能即将进行非移植操作。请小心。
如果窗口是非原生的(外来的),并且对该窗口调用了 winId(),则会向该窗口提供一个原生句柄。
此值可能在运行时更改。当窗口系统标识符更改时,会向窗口发送类型为 QEvent::WinIdChange 的事件。
参阅
注意
本节包含自动从C++转换为Python的代码片段,可能包含错误。
返回此小部件的窗口,即具有(或可能具有)窗口系统框架的下一级小部件。
如果小部件是窗口,则返回小部件本身。
典型用法是更改窗口标题
aWidget.window().setWindowTitle("New Window Title")
参阅
- windowFilePath()#
- 返回类型::
str
属性
windowFilePathᅟ
的获取器。- windowFlags()#
- 返回类型::
WindowType
的组合
如果这是一个本地小部件,则返回相关联的 QWindow。否则返回 null。
本地小部件包括顶级小部件、QGLWidget 以及在它们上调用
winId()
的小部件。属性
windowIconᅟ
的获取器。当窗口的图标更改时,会发出此信号,并通过新的
icon
作为参数传入。属性
windowIconᅟ
的通知信号。- windowIconText()#
- 返回类型::
str
属性
windowIconTextᅟ
的获取器。- windowIconTextChanged(iconText)#
- 参数:
iconText – 字符串
当窗口的图标文本更改时发出此信号,将新的
iconText
作为参数。此信号已废弃。
属性
windowIconTextᅟ
的通知信号。- 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()#
- 返回类型::
返回此小部件的窗口类型。这相当于
windowFlags()
& Qt::WindowType_Mask。参阅
- x()#
- 返回类型::
int
属性
xᅟ
的获取器。- y()#
- 返回类型::
int
属性
yᅟ
的获取器。