QWindow 类

QWindow 类表示底层窗口系统中的一个窗口。 更多...

头文件 #include <QWindow>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承 QObjectQSurface
继承自

QPaintDeviceWindowQQuickWindowQVulkanWindow

公共类型

枚举AncestorMode {ExcludeTransients, IncludeTransients}
枚举Visibility {Windowed, Minimized, Maximized, FullScreen, AutomaticVisibility, Hidden}

属性

公共函数

QWindow(QScreen *targetScreen = nullptr)
QWindow(QWindow *parent)
virtual~QWindow()
QSizebaseSize() const
Qt::ScreenOrientationcontentOrientation() const
voidcreate()
QCursorcursor() const
voiddestroy()
qrealdevicePixelRatio() const
QStringfilePath() const
Qt::WindowFlagsflags() const
virtual QObject *focusObject() const
QRectframeGeometry() const
QMarginsframeMargins() const
QPointframePosition() const
QRectgeometry() const
intheight() const
QIconicon() const
boolisActive() const
boolisAncestorOf(const QWindow *child, QWindow::AncestorMode mode = IncludeTransients) const
boolisExposed() const
boolisModal() const
boolisTopLevel() const
boolisVisible() const
(since 6.0) QPointFmapFromGlobal(const QPointF &pos) const
QPointmapFromGlobal(const QPoint &pos) const
(since 6.0) QPointFmapToGlobal(const QPointF &pos) const
QPointmapToGlobal(const QPoint &pos) const
QRegionmask() const
intmaximumHeight() const
QSizemaximumSize() const
intmaximumWidth() const
intminimumHeight() const
QSizeminimumSize() const
intminimumWidth() const
Qt::WindowModalitymodality() const
qrealopacity() const
QWindow *parent(QWindow::AncestorMode mode = ExcludeTransients) const
QPointposition() const
voidreportContentOrientationChange(Qt::ScreenOrientation orientation)
QSurfaceFormatrequestedFormat() const
voidresize(const QSize &newSize)
voidresize(int w, int h)
QScreen *screen() const
voidsetBaseSize(const QSize &size)
voidsetCursor(const QCursor &cursor)
voidsetFilePath(const QString &filePath)
voidsetFlag(Qt::WindowType flag, bool on = true)
voidsetFlags(Qt::WindowFlags flags)
voidsetFormat(const QSurfaceFormat &format)
voidsetFramePosition(const QPoint &point)
voidsetIcon(const QIcon &icon)
boolsetKeyboardGrabEnabled(bool grab)
voidsetMask(const QRegion &region)
voidsetMaximumSize(const QSize &size)
voidsetMinimumSize(const QSize &size)
voidsetModality(Qt::WindowModality modality)
boolsetMouseGrabEnabled(bool grab)
voidsetOpacity(qreal level)
voidsetParent(QWindow *parent)
voidsetPosition(const QPoint &pt)
voidsetPosition(int posx, int posy)
voidsetScreen(QScreen *newScreen)
voidsetSizeIncrement(const QSize &size)
voidsetSurfaceType(QSurface::SurfaceType surfaceType)
voidsetTransientParent(QWindow *parent)
voidsetVisibility(QWindow::Visibility v)
voidsetVulkanInstance(QVulkanInstance *instance)
voidsetWindowState(Qt::WindowState state)
voidsetWindowStates(Qt::WindowStates state)
QSizesizeIncrement() const
QStringtitle() const
QWindow *transientParent() const
Qt::WindowTypetype() const
voidunsetCursor()
QWindow::Visibilityvisibility() const
QVulkanInstance *vulkanInstance() const
intwidth() const
WIdwinId() const
Qt::WindowStatewindowState() const
Qt::WindowStateswindowStates() const
intx() const
inty() const

重实现的公共函数

virtual QSurfaceFormatformat() const override
virtual QSizesize() const override
virtual QSurface::SurfaceTypesurfaceType() const override

公共槽

voidalert(int msec)
boolclose()
voidhide()
voidlower()
voidraise()
voidrequestActivate()
voidrequestUpdate()
voidsetGeometry(int posx, int posy, int w, int h)
voidsetGeometry(const QRect &rect)
voidsetHeight(int arg)
voidsetMaximumHeight(int h)
voidsetMaximumWidth(int w)
voidsetMinimumHeight(int h)
voidsetMinimumWidth(int w)
voidsetTitle(const QString &)
voidsetVisible(bool visible)
voidsetWidth(int arg)
voidsetX(int arg)
voidsetY(int arg)
voidshow()
voidshowFullScreen()
voidshowMaximized()
voidshowMinimized()
voidshowNormal()
boolstartSystemMove()
boolstartSystemResize(Qt::Edges edges)

信号

voidactiveChanged()
voidcontentOrientationChanged(Qt::ScreenOrientation orientation)
voidfocusObjectChanged(QObject *object)
voidheightChanged(int arg)
voidmaximumHeightChanged(int arg)
voidmaximumWidthChanged(int arg)
voidminimumHeightChanged(int arg)
voidminimumWidthChanged(int arg)
voidmodalityChanged(Qt::WindowModality modality)
voidopacityChanged(qreal opacity)
voidscreenChanged(QScreen *screen)
voidtransientParentChanged(QWindow *transientParent)
voidvisibilityChanged(QWindow::Visibility visibility)
voidvisibleChanged(bool arg)
voidwidthChanged(int arg)
voidwindowStateChanged(Qt::WindowState windowState)
voidwindowTitleChanged(const QString &title)
voidxChanged(int arg)
voidyChanged(int arg)

静态公共成员

QWindow *fromWinId(WId id)

受保护的函数

virtual voidcloseEvent(QCloseEvent *ev)
virtual voidexposeEvent(QExposeEvent *ev)
virtual voidfocusInEvent(QFocusEvent *ev)
virtual voidfocusOutEvent(QFocusEvent *ev)
virtual voidhideEvent(QHideEvent *ev)
virtual voidkeyPressEvent(QKeyEvent *ev)
virtual voidkeyReleaseEvent(QKeyEvent *ev)
virtual voidmouseDoubleClickEvent(QMouseEvent *ev)
virtual voidmouseMoveEvent(QMouseEvent *ev)
virtual voidmousePressEvent(QMouseEvent *ev)
virtual voidmouseReleaseEvent(QMouseEvent *ev)
virtual voidmoveEvent(QMoveEvent *ev)
virtual boolnativeEvent(const QByteArray &eventType, void *message, qintptr *result)
(since 6.0) virtual voidpaintEvent(QPaintEvent *ev)
virtual voidresizeEvent(QResizeEvent *ev)
virtual voidshowEvent(QShowEvent *ev)
virtual voidtabletEvent(QTabletEvent *ev)
virtual voidtouchEvent(QTouchEvent *ev)
virtual voidwheelEvent(QWheelEvent *ev)

重实现受保护的函数

virtual boolevent(QEvent *ev) override

详细描述

具有父窗口的窗口成为其父窗口的原生子窗口。

通常,应用程序会使用 QWidgetQQuickView 进行其UI,而不是直接使用 QWindow。但是,当想要保持最小的依赖性或直接使用 OpenGL 时,可以使用 QBackingStoreQOpenGLContext 直接渲染到 QWindow。对于如何使用这两种方法之一将内容渲染到 QWindow,光栅窗口示例OpenGL 窗口示例 是有用的参考示例。

资源管理

窗口可能使用大量的内存。一个常见的测量方法是宽度乘以高度乘以颜色深度。窗口还可能包含多个缓冲区以支持双倍和三重缓冲,以及深度和模板缓冲区。要释放窗口的内存资源,请调用 destroy() 函数。

内容方向

QWindow 有 reportContentOrientationChange(),可以用来指定窗口内容相对于屏幕的布局。内容方向只是向窗口系统提供有关窗口内容方向的提示。当您希望保持相同的窗口大小,但旋转内容时,这很有用,尤其是在不同方向之间进行旋转动画时。窗口系统可能会使用此值来确定系统软件弹出或对话框的布局。

可见性和窗口化系统曝光

默认情况下,窗口不可见,您必须调用setVisible(true),或show()或类似方法使其可见。要使窗口再次隐藏,请调用setVisible(false)或hide()。可见属性描述了应用程序希望窗口处于的状态。根据底层系统,可见窗口可能仍然不会显示在屏幕上。例如,它可能被其他不透明窗口覆盖或移出屏幕的物理区域。在具有曝光通知的窗口化系统中,isExposed()访问器描述了窗口是否应被视为直接在屏幕上可见。每当窗口的某个区域失效时,即由于窗口化系统中的曝光改变等,都会调用exposeEvent()函数。在不将此类信息提供给应用程序的窗口化系统中,isExposed()将简单地返回与isVisible()相同的值。

QWindow::Visibility通过visibility()查询的是一种方便的API,它组合了visible()和windowStates()函数的功能。

渲染

有两个Qt API可以用来将内容渲染到窗口中,即用于使用QBackingStoreQPainter进行渲染并将内容刷新到类型为QSurface::RasterSurface的窗口中的API,以及用于使用OpenGL并将内容渲染到类型为QSurface::OpenGLSurface的窗口中的QOpenGLContext

isExposed()返回true时,应用程序可以开始渲染,并可以保持渲染,直到isExposed()返回false。要查看isExposed()何时更改,请重新实现exposeEvent()。窗口始终会在第一次曝光事件之前收到一个大小调整事件。

初始几何形状

如果未初始化窗口的宽度和高度,窗口将从前端窗口获取一个合理的默认几何形状。如果未初始化位置,则平台窗口将允许窗口化系统定位窗口。例如,在X11中,窗口管理器通常会实施某种智能定位尝试,避免新窗口完全遮挡现有窗口。然而,setGeometry()同时初始化位置和大小,因此如果您想要固定大小但自动位置,则应调用resize()或setWidth()和setHeight()。

成员类型文档

enum QWindow::AncestorMode

此枚举用于控制是否应将瞬态父窗口视为祖先。

常量描述
QWindow::ExcludeTransients0瞬态父窗口不是祖先。
QWindow::IncludeTransients1瞬态父窗口是祖先。

enum QWindow::Visibility

此枚举描述了窗口占据或应占据的屏幕部分。

常量描述
QWindow::Windowed2窗口占用屏幕的一部分,但不一定是整个屏幕。只有在支持同时显示多个窗口的窗口系统中,该状态才会出现。在此状态下,如果窗口标志允许并且窗口系统支持,用户可以手动移动和调整窗口大小。
QWindow::Minimized3窗口减少为任务栏、Dock、任务列表或桌面上的条目或图标,具体取决于窗口系统如何处理最小化窗口。
QWindow::Maximized4窗口占据整个屏幕,标题栏仍然可见。在大多数窗口系统中,通过单击工具栏上的最大化按钮可以获得此状态。
QWindow::FullScreen5窗口占据整个屏幕,无法调整大小,并且没有标题栏。在不支持同时显示多个窗口的一些平台中,这可能是窗口未隐藏时的常规可见性。
QWindow::AutomaticVisibility1这意味着为窗口提供一个默认的可见状态,这可能取决于平台是全屏或窗口化。它可以作为参数传递给 setVisibility,但永远不会从可见性访问器中读取。
QWindow::Hidden0窗口在任何方式下都是不可见的,然而它可能保留一种潜在的可见性,可以通过设置 AutomaticVisibility 恢复。

属性文档

[只读] active : const bool

此属性持有窗口的激活状态

访问函数

boolisActive() const

通知器信号

voidactiveChanged()

另请参阅requestActivate().

contentOrientation : Qt::ScreenOrientation

此属性保持窗口内容的方向

这是对窗口管理器的一个提示,以防它需要显示有关窗口的额外内容,如弹出窗口、对话框、状态栏等。

推荐的朝向是 QScreen::orientation(),但应用程序不需要支持所有可能的朝向,因此可以选择忽略当前屏幕朝向。

窗口和内容朝向之间的差异决定了内容旋转多少。可以使用 QScreen::angleBetween()、QScreen::transformBetween() 和 QScreen::mapBetween() 来计算所需的转换。

默认值是 Qt::PrimaryOrientation

访问函数

Qt::ScreenOrientationcontentOrientation() const
voidreportContentOrientationChange(Qt::ScreenOrientation orientation)

通知器信号

voidcontentOrientationChanged(Qt::ScreenOrientation orientation)

flags : Qt::WindowFlags

此属性保持窗口的标志

窗口标志控制窗口在窗口系统中的外观,是对话框、弹出式窗口还是常规窗口,以及它是否应有标题栏等。

实际的窗口标志可能与 setFlags() 设置的标志不同,如果请求的标志无法满足。

访问函数

Qt::WindowFlagsflags() const
voidsetFlags(Qt::WindowFlags flags)

另请参阅setFlag().

height : int

此属性保持窗口几何的高度

访问函数

intheight() const
voidsetHeight(int arg)

通知器信号

voidheightChanged(int arg)

最大高度 : int

此属性保留窗口几何形状的最大高度

访问函数

intmaximumHeight() const
voidsetMaximumHeight(int h)

通知器信号

voidmaximumHeightChanged(int arg)

maximumWidth : int

此属性保留窗口几何形状的最大宽度

访问函数

intmaximumWidth() const
voidsetMaximumWidth(int w)

通知器信号

voidmaximumWidthChanged(int arg)

minimumHeight : int

此属性保留窗口几何形状的最小高度

访问函数

intminimumHeight() const
voidsetMinimumHeight(int h)

通知器信号

voidminimumHeightChanged(int arg)

minimumWidth : int

此属性保留窗口几何形状的最小宽度

访问函数

intminimumWidth() const
voidsetMinimumWidth(int w)

通知器信号

voidminimumWidthChanged(int arg)

modality : Qt::WindowModality

此属性保留窗口的模式

模态窗口阻止其他窗口接收输入事件。Qt支持两种模式: Qt::WindowModalQt::ApplicationModal

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

访问函数

Qt::WindowModalitymodality() const
voidsetModality(Qt::WindowModality modality)

通知器信号

voidmodalityChanged(Qt::WindowModality modality)

另请参阅Qt::WindowModality

不透明度 : qreal

此属性保留窗口在窗口系统中的不透明度。

如果窗口系统支持窗口不透明度,则可以使用此功能来淡入淡出窗口,或使其半透明。

值为1.0或以上的被视为完全不透明,而值为0.0或以下的被视为完全透明。介于两者之间的值表示两种极端之间不同程度的透明度。

默认值为1.0。

访问函数

qrealopacity() const
voidsetOpacity(qreal level)

通知器信号

voidopacityChanged(qreal opacity)

标题 : QString

此属性保留窗口系统中的窗口标题

窗口标题可能会出现在窗口装饰的标题区域中,具体取决于窗口系统和窗口标志。它也可能由窗口系统用于在其他上下文中识别窗口,例如在任务切换器中。

访问函数

QStringtitle() const
voidsetTitle(const QString &)

通知器信号

voidwindowTitleChanged(const QString &title)

另请参阅flags

transientParent : QWindow*

此属性保留本窗口是其瞬态弹出窗口的窗口

这是向窗口管理器的一个提示,说明此窗口是瞬态父窗口的对话框或弹出窗口。

为了使窗口默认在它的临时父窗口上方居中,根据窗口管理器,可能还需要调用带有合适的Qt::WindowType(例如 Qt::Dialog)的setFlags()。

访问函数

QWindow *transientParent() const
voidsetTransientParent(QWindow *parent)

通知器信号

voidtransientParentChanged(QWindow *transientParent)

参见 parent

visibility : Visibility

此属性保存窗口的屏幕占用状态

可见性指的是窗口在窗口系统中的显示方式,是正常、最小化、最大化、全屏还是隐藏。

将可见性设置为AutomaticVisibility意味着为窗口提供默认的可见状态,这可能是全屏或窗口状态,具体取决于平台。在读取可见性属性时,您始终会得到实际状态,而不是AutomaticVisibility

访问函数

QWindow::Visibilityvisibility() const
voidsetVisibility(QWindow::Visibility visibility)

通知器信号

voidvisibilityChanged(QWindow::Visibility visibility)

visible : bool

此属性保存窗口是否可见

此属性控制窗口在窗口系统中的可见性。

默认情况下,窗口不可见,您必须调用setVisible(true)、show或类似的方法使其可见。

注意:隐藏窗口不会将窗口从窗口系统删除,它只是隐藏它。在为全屏应用程序提供专用桌面的窗口系统(如macOS)上,隐藏全屏窗口不会删除该桌面,而是使其变为空白。另一个来自同一应用程序的窗口可能以全屏方式显示,并将填充该桌面。使用QWindow::close可以完全从窗口系统删除一个窗口。

访问函数

boolisVisible() const
voidsetVisible(bool visible)

通知器信号

voidvisibleChanged(bool arg)

参见 show

width : int

此属性保存窗口几何形状的宽度

访问函数

intwidth() const
voidsetWidth(int arg)

通知器信号

voidwidthChanged(int arg)

x : int

此属性保存窗口几何形状的x位置

访问函数

intx() const
voidsetX(int arg)

通知器信号

voidxChanged(int arg)

y : int

此属性保存窗口几何形状的y位置

访问函数

inty() const
voidsetY(int arg)

通知器信号

voidyChanged(int arg)

成员函数文档

[显式] QWindow::QWindow(QScreen *targetScreen = nullptr)

在一个targetScreen上创建一个顶级窗口。

除非调用setVisible(true)、show或类似方法,否则窗口不会显示。

参见 setScreen

[显式] QWindow::QWindow(QWindow *parent)

创建一个作为给定父窗口子窗口的窗口。

窗口将被嵌入父窗口内部,其坐标相对于父窗口。

屏幕从父窗口继承。

另请参阅setParent().

[虚不可抛出] QWindow::~QWindow()

销毁窗口。

[槽] void QWindow::alert(int msec)

使警报在 msec 毫秒后显示。如果 msec0(默认值),则警报会无限期显示,直到窗口再次变为活动状态。此函数对活动窗口没有影响。

在警告状态下,窗口指示它需要注意,例如通过闪烁或弹跳任务栏条目。

QSize QWindow::baseSize() const

返回窗口的基本大小。

另请参阅setBaseSize().

[槽] bool QWindow::close()

关闭窗口。

这会关闭窗口,有效调用 destroy(),并可能退出应用程序。在成功时返回 true,如果它有一个父窗口(在这种情况下,应关闭顶级窗口),则返回 false。

另请参阅destroy(),QGuiApplication::quitOnLastWindowClosed(),以及 closeEvent().

[虚保护] void QWindow::closeEvent(QCloseEvent *ev)

重写此方法以处理关闭事件(《i translate="no">ev》)

当请求关闭窗口时调用此函数。如果想要防止窗口关闭,请对事件调用 QEvent::ignore()

另请参阅close().

void QWindow::create()

分配窗口关联的平台资源。

此时,使用 setFormat() 设置的表面格式将解析为实际的本地表面。然而,窗口将保持隐藏,直到调用 setVisible()。

请注意,通常无需直接调用此函数,因为当调用 show(),setVisible(),winId() 和其他需要访问平台资源的函数时,会隐式调用此函数。

如果需要,请调用 destroy() 释放平台资源。

另请参阅destroy().

QCursor QWindow::cursor() const

此窗口的光标形状

另请参阅setCursor() 和 unsetCursor().

void QWindow::destroy()

释放与此窗口相关联的原生平台资源。

另请参阅create().

qreal QWindow::devicePixelRatio() const

返回窗口的物理像素与设备无关像素之间的比率。这个值取决于窗口所在的屏幕,当窗口移动时可能发生变化。

常见值是在常规显示上为1.0,在Apple "视网膜"显示上为2.0。

注意:对于不由平台窗口支持的窗口,即未调用create(),该函数将回退到关联的QScreen的设备像素比率。

另请参阅QScreen::devicePixelRatio().

[覆盖虚拟受保护] bool QWindow::event(QEvent *ev)

重新实现:QObject::event(QEvent *e).

重写此方法以处理窗口收到的任何事件(ev)。如果事件被识别和处理,则返回true

如果您想使鼠标事件、键盘事件、大小调整事件等像往常一样分发,请记住调用基类版本。

[虚拟受保护] void QWindow::exposeEvent(QExposeEvent *ev)

当窗口在未暴露和暴露状态之间移动时,窗口系统会发送暴露事件(ev)。

一个暴露的窗口可能对用户可见。如果窗口移出屏幕,被另一个窗口完全遮挡,最小化,或类似的情况,这个函数可能会被调用,并且isExposed()的值可能会变为false。您可以使用此事件将如图形动画等昂贵的操作仅限于窗口暴露时执行。

不应使用此事件进行绘制。要处理绘制,请实现paintEvent()而不是。

窗口第一次显示时,将始终在暴露事件之前发送大小调整事件。

另请参阅paintEvent() 和 isExposed().

QString QWindow::filePath() const

此窗口所代表的文件名。

另请参阅setFilePath().

[虚拟受保护] void QWindow::focusInEvent(QFocusEvent *ev)

重写此方法以处理焦点进入事件(ev)。

当窗口获得键盘焦点时,会发送焦点进入事件。

另请参阅focusOutEvent().

[虚拟] QObject *QWindow::focusObject() const

返回将接收与焦点相关的事件的QObject,例如键事件。

[信号] void QWindow::focusObjectChanged(QObject *object)

此信号在关联到焦点的最后接收者更改为 object 时发出。

另请参阅 focusObject().

[虚保护] void QWindow::focusOutEvent(QFocusEvent *ev)

重写此函数以处理焦点消失事件(ev)。

在窗口失去键盘焦点时发送焦点消失事件。

另请参阅 focusInEvent().

[重写虚拟] QSurfaceFormat QWindow::format() const

重新实现: QSurface::format() const.

返回该窗口的实际格式。

窗口创建后,此函数将返回窗口的实际表面格式。如果平台无法满足请求的格式,可能不同。也可能是一个超集,例如某些缓冲区大小可能大于请求的大小。

注意: 根据平台,表面格式中的某些值可能仍然包含请求的值,即传递给 setFormat() 的值。典型例子是 OpenGL 版本、配置文件和选项。这些可能在 create() 或创建上下文之后更新,因为这些是上下文特定的,并且一个窗口可能在一生中与多个上下文一起使用。请使用 QOpenGLContext's format() 代替查询此类值。

另请参阅 setFormat(),create(),requestedFormat(),以及 QOpenGLContext::format().

QRect QWindow::frameGeometry() const

返回窗口的几何形状,包括其窗口框架。

该几何形状与屏幕的 virtualGeometry() 相关联。

另请参阅 geometry() 和 frameMargins().

QMargins QWindow::frameMargins() const

返回围绕窗口的窗口框架边缘。

另请参阅 geometry() 和 frameGeometry().

QPoint QWindow::framePosition() const

返回包括其窗口框架在内的窗口左上角位置。

这返回与 frameGeometry().topLeft(). 相同的值。

另请参阅 setFramePosition(),geometry(),和 frameGeometry().

[静态] QWindow *QWindow::fromWinId(WId id)

为由另一个进程创建或使用 Qt 以下本机库创建的窗口创建一个局部表示。

给定一个本地窗口的句柄id,此方法创建一个QWindow对象,该对象可以用于调用如setParent()和setTransientParent()等方法的窗口表示。

在支持此平台的情况下,可以用来在本地窗口中嵌入一个QWindow,或者在一个QWindow中嵌入本地窗口。

如果不支持外部窗口,或在平台插件中嵌入本地窗口失败,则此函数返回nullptr

注意:生成的QWindow不应用于操作底层本地窗口(除了重新设置父节点),或观察本地窗口的状态变化。对这些操作的支持是临时性的、高度依赖于平台的,且未经测试。

另请参阅setParent().

QRect QWindow::geometry() const

返回窗口的几何形状,不包括其窗口框架。

该几何形状与屏幕的 virtualGeometry() 相关联。

另请参阅:setGeometry(),frameMargins()和frameGeometry()。

[槽] void QWindow::hide()

隐藏窗口。

相当于调用setVisible(false)。

另请参阅:show()和setVisible()。

[虚保护] void QWindow::hideEvent(QHideEvent *ev)

重写此方法以处理隐藏事件(ev)。

当窗口请求在窗口系统中被隐藏时,会调用此函数。

QIcon QWindow::icon() const

返回窗口系统中的窗口图标。

另请参阅:setIcon()。

bool QWindow::isActive() const

如果窗口是活动窗口,则返回true

这包括具有输入焦点的窗口,以及与焦点窗口位于同一父节点/暂时的父节点链中的窗口。

从样式角度来看,通常活动窗口应看起来是活动的。

要获取当前具有焦点的窗口,请使用QGuiApplication::focusWindow()。

注意:属性active的获取器函数。

另请参阅requestActivate().

bool QWindow::isAncestorOf(const QWindow *child, QWindow::AncestorMode mode = IncludeTransients) const

如果窗口是给定child的祖先,则返回true。如果modeIncludeTransients,则也考虑暂时的父节点为祖先。

bool QWindow::isExposed() const

返回此窗口是否在窗口系统中暴露。

当窗口未被暴露时,它由应用程序显示,但仍在窗口系统中未显示,因此应用程序应最小化动画和其他图形活动。

每次此值更改时,都会发送一个exposeEvent()。

另请参阅 exposeEvent()。

bool QWindow::isModal() const

返回窗口是否为模态窗口。

模态窗口阻止其他窗口接收任何输入。

另请参阅 QWindow::modality

bool QWindow::isTopLevel() const

返回窗口是否为顶层窗口,即没有父窗口。

[虚保护] void QWindow::keyPressEvent(QKeyEvent *ev)

覆盖此方法以处理按键事件(ev)。

另请参阅 keyReleaseEvent

[虚保护] void QWindow::keyReleaseEvent(QKeyEvent *ev)

覆盖此方法以处理按键释放事件(ev)。

另请参阅 keyPressEvent

[槽] void QWindow::lower()

将窗口降低到窗口系统的底部。

请求将窗口降低以便在其它窗口下方显示。

[自6.0以来] QPointF QWindow::mapFromGlobal(const QPointF &pos) const

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

此函数自 Qt 6.0 版本开始引入。

另请参阅 mapToGlobal

QPoint QWindow::mapFromGlobal(const QPoint &pos) const

这是一个重载函数。

[自6.0以来] QPointF QWindow::mapToGlobal(const QPointF &pos) const

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

此函数自 Qt 6.0 版本开始引入。

另请参阅 mapFromGlobal

QPoint QWindow::mapToGlobal(const QPoint &pos) const

这是一个重载函数。

QRegion QWindow::mask() const

返回窗口上设置的面板。

面板是向窗口系统提示,应用程序不希望接收指定区域之外的鼠标或触摸输入。

另请参阅 setMask

QSize QWindow::maximumSize() const

返回窗口的最大尺寸。

另请参阅 setMaximumSize

QSize QWindow::minimumSize() const

返回窗口的最小尺寸。

另请参阅 setMinimumSize

[信号] void QWindow::modalityChanged(Qt::WindowModality modality)

当 Qwindow::modality 属性变为 modality 时,会发出此信号。

注意:属性 modality 的通知信号。

[虚保护] void QWindow::mouseDoubleClickEvent(QMouseEvent *ev)

重写此方法以处理鼠标双击事件(ev)。

另请参阅mousePressEvent() 和 QStyleHints::mouseDoubleClickInterval

[虚保护] void QWindow::mouseMoveEvent(QMouseEvent *ev)

重写此方法以处理鼠标移动事件(ev)。

[虚保护] void QWindow::mousePressEvent(QMouseEvent *ev)

重写此方法以处理鼠标按下事件(ev)。

另请参阅mouseReleaseEvent

[虚保护] void QWindow::mouseReleaseEvent(QMouseEvent *ev)

重写此方法以处理鼠标释放事件(ev)。

另请参阅mousePressEvent

[虚保护] void QWindow::moveEvent(QMoveEvent *ev)

重写此方法以处理窗口移动事件(ev)。

[虚保护,自 6.0 开始] void QWindow::paintEvent(QPaintEvent *ev)

此方法用于处理平台相关事件。会传递 eventTypemessageresult

这可能会使你的应用不可移植。

只有当事件被处理时,才应返回 true。

[虚保护,自 6.0 开始] void QWindow::paintEvent(QPaintEvent *ev)

当窗口的某个区域需要重绘时(例如,窗口首次显示或因其他窗口移动而露出窗口的部分),窗口系统会发送绘制事件(ev)。

无论窗口的暴露状态如何,应用程序都应响应绘制事件来在窗口中渲染。例如,在窗口暴露之前可能发送绘制事件,以便准备向用户显示。

此函数自 Qt 6.0 版本开始引入。

另请参阅 exposeEvent()。

QWindow *QWindow::parent(QWindow::AncestorMode mode = ExcludeTransients) const

如果有的话,返回父窗口。

如果 模式IncludeTransients,则在没有父窗口时,返回瞬态父窗口。

没有父窗口的窗口称为顶级窗口。

另请参阅setParent().

QPoint QWindow::position() const

返回窗口在桌面上的位置,不包括任何窗口框架

注意: 并非所有窗口系统都支持设置或查询顶级窗口的位置。在这样的系统中,通过程序移动窗口可能没有任何效果,并且当前位置可能会返回 искусственные值,例如 QPoint(0, 0)

另请参阅 setPosition

[slot] void QWindow::raise()

在窗口系统中提升窗口。

请求将窗口提升以在其它窗口之上显示。

[slot] void QWindow::requestActivate()

请求激活窗口,即接收键盘焦点。

另请参阅 isActive() 和 QGuiApplication::focusWindow

[slot] void QWindow::requestUpdate()

安排一个 QEvent::UpdateRequest 事件被发送到该窗口。

在可进行此操作的平台中,事件在显示 vsync 同步时发送。否则,事件将在最多 5 毫秒的延迟后发送。如果窗口关联的屏幕报告的 刷新率 高于 60 Hz,间隔将降至小于 5 的值。额外的时间提供了事件循环一点空闲时间来收集系统事件,并且可以使用 QT_QPA_UPDATE_IDLE_TIME 环境变量来覆盖。

在驱动动画时,这个函数应该在绘制完成后调用一次。多次调用此函数会导致向窗口发送单个事件。

QWindow 的子类应该重新实现 event(),拦截事件并调用应用的渲染代码,然后调用基类实现。

注意: 子类对 event() 的重新实现必须调用基类实现,除非它绝对确定不需要基类来处理此事件。例如,此函数的默认实现依赖于 QEvent::Timer 事件。过滤掉它们将破坏更新事件的通知。

QSurfaceFormat QWindow::requestedFormat() const

返回此窗口请求的表面格式。

如果请求的格式不受平台实现支持,则 requestedFormat 与实际窗口格式将不同。

这是用 setFormat 设置的值。

另请参阅 setFormat() 和 format

void QWindow::resize(const QSize &newSize)

将窗口的大小(不包括任何窗口框架)设置为 newSize

另请参阅 size() 和 geometry().

void QWindow::resize(int w, int h)

设置窗口大小,不包括任何窗口框架,到一个由宽度 w 和高度 h 构造的 QSize

有关交互式调整窗口大小,请参阅 startSystemResize

另请参阅 size() 和 geometry().

[虚拟保护] void QWindow::resizeEvent(QResizeEvent *ev)

重写此方法以处理调整大小事件(ev)。

每当窗口在窗口系统中调整大小(无论是通过窗口系统的 setGeometry() 或 resize() 请求直接确认,还是通过用户手动调整窗口间接调整)时,都会调用调整大小事件。

QScreen *QWindow::screen() const

返回显示窗口的屏幕,如果没有,则返回 null。

对于子窗口,这返回相应顶级窗口的屏幕。

另请参阅 setScreen() 和 QScreen::virtualSiblings

[信号] void QWindow::screenChanged(QScreen *screen)

当窗口的 screen 发生变化时发出此信号,无论是通过显式地使用 setScreen() 设置,还是当移除窗口的屏幕时自动发生。

void QWindow::setBaseSize(const QSize &size)

设置窗口的基准 size

基准大小用于计算适当的窗口大小,如果窗口定义了 sizeIncrement

另请参阅 setMinimumSizesetMaximumSizesetSizeIncrementbaseSize

void QWindow::setCursor(const QCursor &cursor)

设置此窗口的光标形状

当鼠标光标位于此窗口上时,光标将采用这种形状,除非设置了重写光标。有关一系列有用的形状,请参阅预定义光标对象的 列表

如果尚未设置光标,或者调用 unsetCursor() 后,将使用父窗口的光标。

默认情况下,光标具有 Qt::ArrowCursor 形状。

某些底层窗口实现会在鼠标离开窗口时重置光标,即使鼠标已被捕获。如果想要在所有窗口上设置光标,甚至在窗口外时也如此,请考虑使用 QGuiApplication::setOverrideCursor

另请参阅 cursor() 和 QGuiApplication::setOverrideCursor

void QWindow::setFilePath(const QString &filePath)

设置此窗口所代表的文件名。

窗口系统可能会使用 filePath 在任务栏中显示此窗口所代表的文档的路径。

另请参阅 filePath

void QWindow::setFlag(Qt::WindowType flag, bool on = true)

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

另请参阅 setFlags(),flags() 和 type()。

void QWindow::setFormat(const QSurfaceFormat &format)

设置窗口的表面 format

该格式确定了诸如颜色深度、alpha、深度和模板缓冲区大小等属性。例如,要给窗口一个透明的背景(假设窗口系统支持合成,并且假设窗口中的其他内容不会再次将其变为不透明)

QSurfaceFormat format;
format.setAlphaBufferSize(8);
window.setFormat(format);

表面格式将在 create() 函数中解析。在调用 create() 之后调用此函数不会重新解析原生物理表面上的表面格式。

如果没有通过此函数显式设置格式,将使用 QSurfaceFormat::defaultFormat() 返回的格式。这意味着在拥有多个窗口的情况下,可以将创建第一个窗口之前对每个窗口的单个调用替换为对 QSurfaceFormat::setDefaultFormat() 的单个调用。

另请参阅 format(),create(),destroy() 和 QSurfaceFormat::setDefaultFormat()。

void QWindow::setFramePosition(const QPoint &point)

设置窗口(包含其窗口框架)的上角位置(point)。

该位置相对于其屏幕的 virtualGeometry()。

另请参阅 framePosition(),setGeometry() 和 frameGeometry()。

[槽] void QWindow::setGeometry(int posx, int posy, int w, int h)

将窗口的几何形状,不包括其窗口框架,设置为从 posxposywh 构造的矩形。

该几何形状与屏幕的 virtualGeometry() 相关联。

另请参阅 geometry()。

[槽] void QWindow::setGeometry(const QRect &rect)

将窗口的几何形状,不包括其窗口框架,设置为 rect

该几何形状与屏幕的 virtualGeometry() 相关联。

另请参阅 geometry()。

void QWindow::setIcon(const QIcon &icon)

在窗口系统中设置窗口的 icon

窗口图标可能被窗口系统用于装饰窗口以及/或用于任务切换器中的窗口。

注意:在 macOS 上,窗口标题栏图标是用于表示文档的窗口的,只有在设置了文件路径时才会显示。

另请参阅 icon() 和 setFilePath()。

bool QWindow::setKeyboardGrabEnabled(bool grab)

设置是否应该启用键盘捕获(抓取)。

如果返回值为true,窗口将接收所有按键事件,直到调用setKeyboardGrabEnabled(false)为止;其他窗口则不会接收到任何按键事件。鼠标事件不受影响。如果您想要捕获鼠标事件,请使用setMouseGrabEnabled()。

另请参阅setMouseGrabEnabled

void QWindow::setMask(const QRegion &region)

设置窗口的遮罩。

遮罩是一个提示窗口系统,应用程序不希望在指定的区域外接收鼠标或触摸输入。

窗口管理器可能会也可能不会选择显示遮罩之外的任何窗口区域,因此清除非遮罩区域变为透明是应用程序的责任。

另请参阅mask

void QWindow::setMaximumSize(const QSize &size)

设置窗口的最大尺寸。

这是向窗口管理器提示,避免调整到指定的尺寸之上。

另请参阅setMinimumSizemaximumSize

void QWindow::setMinimumSize(const QSize &size)

设置窗口的最小尺寸。

这是向窗口管理器提示,避免调整到指定的尺寸以下。

另请参阅setMaximumSizeminimumSize

bool QWindow::setMouseGrabEnabled(bool grab)

设置是否应该启用鼠标捕获(抓取)。

如果返回值为true,窗口在调用setMouseGrabEnabled(false)之前将接收所有鼠标事件;其他窗口将不会接收到任何鼠标事件。键盘事件不受影响。如果您想要捕获键盘事件,请使用setKeyboardGrabEnabled()。

另请参阅setKeyboardGrabEnabled

void QWindow::setParent(QWindow *parent)

设置窗口。这将导致窗口系统管理窗口的剪辑,因此窗口将被剪辑到窗口上。

设置为nullptr将使窗口成为顶级窗口。

如果是由fromWinId创建的窗口,那么如果平台支持的话,当前窗口将嵌入到窗口中。

参见 parent

void QWindow::setPosition(const QPoint &pt)

将窗口在桌面上的位置设置为pt

该位置相对于其屏幕的 virtualGeometry()。

对于交互式移动窗口,请参阅startSystemMove。对于交互式调整窗口大小,请参阅startSystemResize

注意: 并非所有窗口系统都支持设置或查询顶级窗口的位置。在这样的系统中,通过程序移动窗口可能没有任何效果,并且当前位置可能会返回 искусственные值,例如 QPoint(0, 0)

另请参阅position()和startSystemMove

void QWindow::setPosition(int posx, int posy)

将窗口在桌面上的位置设置为 posx, posy

该位置相对于其屏幕的 virtualGeometry()。

另请参阅位置

void QWindow::setScreen(QScreen *newScreen)

设置窗口应显示其上的屏幕。

如果已创建该窗口,它将在 newScreen 上重新创建。

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

此函数仅适用于顶级窗口。

另请参阅屏幕() 和 QScreen::virtualSiblings

void QWindow::setSizeIncrement(const QSize &size)

设置窗口的尺寸增量 (size)。

当用户调整窗口大小时,尺寸将以 sizeIncrement 步骤移动。水平方向上宽度增加 width() 像素,垂直方向上高度增加 sizeIncrement() 像素,以 baseSize() 作为基准。

默认情况下,此属性包含宽度为零和高度为零的尺寸。

窗口系统可能不支持尺寸增量。

另请参阅sizeIncrement(),setBaseSize(),setMinimumSize() 和 setMaximumSize

void QWindow::setSurfaceType(QSurface::SurfaceType surfaceType)

设置窗口的 surfaceType

指定窗口是用于使用 QBackingStore 的光栅渲染,还是用于使用 QOpenGLContext 的 OpenGL 渲染。

surfaceType 将在在 create() 函数中创建本地表面时使用。在本地表面已创建后调用此函数需要调用 destroy() 和 create() 释放旧本机表面并创建一个新本机表面。

另请参阅surfaceTypeQBackingStoreQOpenGLContextcreate () 和 destroy ()。

void QWindow::setVulkanInstance(QVulkanInstance *instance)

将此窗口与指定的 Vulkan instance 关联。

instance 必须在 QWindow 实例存在期间保持有效。

另请参阅vulkanInstance

void QWindow::setWindowState(Qt::WindowState state)

设置窗口的屏幕占用状态

窗口 state 表示窗口在窗口系统显示为最大化、最小化、全屏还是正常。

枚举值 Qt::WindowActive 不是接受的参数。

另请参阅 windowState(),showNormal(),showFullScreen(),showMinimized(),showMaximized() 和 setWindowStates()。

void QWindow::setWindowStates(Qt::WindowStates state)

设置窗口的屏幕占用状态

窗口 状态 表示窗口在窗口系统中是否以最大化、最小化和/或全屏方式显示。

窗口可以同时处于多种状态。例如,如果窗口既最小化又最大化,则窗口将显示为最小化状态,但点击任务栏条目将恢复到最大化状态。

不应设置枚举值 Qt::WindowActive

另请参阅 windowStates(),showNormal(),showFullScreen(),showMinimized() 和 showMaximized()。

[slot] void QWindow::show()

显示窗口。

对于子窗口,这相当于调用 showNormal()。否则,根据平台对窗口类型和标志的默认行为,相当于调用 showFullScreen(),showMaximized() 或 showNormal()。

另请参阅 showFullScreen(),showMaximized(),showNormal(),hideQStyleHints::showIsFullScreenflags

[virtual protected] void QWindow::showEvent(QShowEvent *ev)

覆盖此方法以处理显示事件(ev)。

当窗口请求变为可见时,会调用此函数。

如果窗口由窗口系统成功显示,此之后将分别触发一个调整大小事件和一个可选事件。

[slot] void QWindow::showFullScreen()

以全屏方式显示窗口。

相当于调用 setWindowStates(Qt::WindowFullScreen),然后 setVisible(true)。

请参阅 QWidget::showFullScreen() 的文档,了解针对特定平台考虑和限制。

另请参阅 setWindowStatessetVisible

[slot] void QWindow::showMaximized()

以最大化方式显示窗口。

相当于调用 setWindowStates(Qt::WindowMaximized),然后 setVisible(true)。

另请参阅 setWindowStatessetVisible

[slot] void QWindow::showMinimized()

以最小化方式显示窗口。

相当于调用 setWindowStates(Qt::WindowMinimized),然后 setVisible(true)。

另请参阅 setWindowStatessetVisible

[槽] void QWindow::showNormal()

以正常方式显示窗口,即既不是最大话也不是最小化,也不是全屏。

相当于调用 setWindowStates(Qt::WindowNoState) 然后调用 setVisible(true)。

另请参阅 setWindowStatessetVisible

[重写虚函数] QSize QWindow::size() const

重实现: QSurface::size() const

返回不带任何窗口框架的窗口大小

另请参阅resize

QSize QWindow::sizeIncrement() const

返回窗口的大小增量。

另请参阅setSizeIncrement

[槽] bool QWindow::startSystemMove()

启动一个系统特定的移动操作

调用此方法将在支持它的平台上启动一个窗口的交互式移动操作。实际行为可能因平台而异。通常,它将使窗口跟随鼠标光标,直到鼠标按钮被释放。

在支持此功能的中国大陆平台上,此方法移动窗口比使用 setPosition 更受欢迎,因为它允许更本地的移动窗口的外观和感觉,例如允许窗口管理器将此窗口与其他窗口对齐,或者当拖动到屏幕边缘时具有动画的特殊平铺或调整大小行为。此外,在类似于 Wayland 的某些平台上,setPosition 不受支持,因此这是应用能夠影响其位置的唯一方法。

如果系统支持该操作,返回 true。

[槽] bool QWindow::startSystemResize(Qt::Edges edges)

开始一个系统特定的调整大小操作

调用此方法将在支持它的平台上开始一个窗口的交互式调整大小操作。实际行为可能因平台而异。通常,这将使窗口调整大小,使其边缘跟随鼠标光标。

在中国大陆的平台上,此方法调整窗口大小比使用 setGeometry 更受欢迎,因为它允许更本地的调整窗口大小外观和感觉,例如允许窗口管理器将此窗口与其他窗口对齐,或者当拖动到屏幕边缘时具有动画的特殊调整大小行为。

edges 必须是单个边缘,或两个相邻边缘(一个角)。不允许其他值。

如果系统支持该操作,返回 true。

[重写虚函数] QSurface::SurfaceType QWindow::surfaceType() const

重实现 QSurface::surfaceType() const

返回窗口的表面类型。

另请参阅setSurfaceType

[虚保护] void QWindow::tabletEvent(QTabletEvent *ev)

覆盖此函数以处理压下、移动和释放事件(ev)。

接近进入和离开事件不会发送到窗口,而是发送到应用程序实例。

[虚保护] void QWindow::touchEvent(QTouchEvent *ev)

覆盖此函数以处理触摸事件(ev)。

Qt::WindowType QWindow::type() const

返回窗口的类型。

这返回窗口标志中表示窗口是否为对话框、工具提示、弹出窗口、常规窗口等的部分。

另请参阅 flags() 和 setFlags()。

void QWindow::unsetCursor()

将此窗口的默认箭头光标恢复。

QVulkanInstance *QWindow::vulkanInstance() const

如果没有设置相关的 Vulkan 实例,则返回 nullptr

另请参阅 setVulkanInstance()。

[虚保护] void QWindow::wheelEvent(QWheelEvent *ev)

覆盖此函数以处理鼠标滚轮或其他滚轮事件(ev)。

WId QWindow::winId() const

返回窗口的平台 ID。

注意:如果平台窗口尚未创建,此函数将导致创建平台窗口。如果平台窗口创建失败,则返回 0。

对于此 ID 可能有用的平台,返回的值将唯一地表示对应屏幕内的窗口。

另请参阅 screen()。

Qt::WindowState QWindow::windowState() const

窗口的屏幕占用状态

另请参阅 setWindowState() 和 windowStates()。

[信号] void QWindow::windowStateChanged(Qt::WindowState windowState)

windowState 发生变化时发出此信号,无论是通过 setWindowStates() 明确设置,还是当用户点击标题栏的按钮或以其他方式自动设置时。

Qt::WindowStates QWindow::windowStates() const

窗口的屏幕占用状态

窗口可以同时处于多种状态。例如,如果窗口既最小化又最大化,则窗口将显示为最小化状态,但点击任务栏条目将恢复到最大化状态。

另请参阅 setWindowStates()。

© 2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 和相应的标志是芬兰和/或其他国家的 Qt 公司的商标。所有其他商标均为各自所有者的财产。