本页内容

QSurface Class

QSurface 类是 Qt 中可渲染表面的抽象表示。更多内容...

头文件: #include <QSurface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
由以下函数继承:

QOffscreenSurface 以及QWindow

公共类型

enum SurfaceClass { Window, Offscreen }
enum SurfaceType { RasterSurface, OpenGLSurface, OpenVGSurface, VulkanSurface, MetalSurface, Direct3DSurface }

公共函数

virtual ~QSurface()
virtual QSurfaceFormat format() const = 0
virtual QSize size() const = 0
bool supportsOpenGL() const
QSurface::SurfaceClass surfaceClass() const
virtual QPlatformSurface *surfaceHandle() const = 0
virtual QSurface::SurfaceType surfaceType() const = 0

受保护函数

QSurface(QSurface::SurfaceClass type)

详细说明

可通过size()函数访问曲面的大小。可通过format()函数访问曲面的渲染相关属性。

成员类型文档

enum QSurface::SurfaceClass

SurfaceClass 枚举描述了曲面的实际子类。

常量值描述
QSurface::Window0该表面是QWindow 的实例。
QSurface::Offscreen1该表面是QOffscreenSurface 的实例。

enum QSurface::SurfaceType

SurfaceType 枚举用于描述该表面的类型。

常量值描述
QSurface::RasterSurface0该表面由像素组成,可使用 Qt 的光栅绘制引擎等软件光栅化器进行渲染。
QSurface::OpenGLSurface1该表面是兼容 OpenGL 的表面,可与QOpenGLContext 配合使用。
QSurface::OpenVGSurface3该表面是兼容 OpenVG 的表面,可与 OpenVG 上下文配合使用。
QSurface::VulkanSurface4该表面是兼容 Vulkan 的表面,可与 Vulkan 图形 API 配合使用。
QSurface::MetalSurface5该表面是兼容 Metal 的表面,可与 Apple 的 Metal 图形 API 配合使用。此表面类型仅在 macOS 和 iOS 上受支持。
QSurface::Direct3DSurface6该表面是与 Direct 3D 11 和 12 兼容的表面,可与 DXGI 和 Direct3D API 配合使用。此表面类型仅在 Windows 上受支持。

成员函数文档

[explicit protected] QSurface::QSurface(QSurface::SurfaceClass type)

使用给定的type 创建一个曲面。

[virtual noexcept] QSurface::~QSurface()

破坏表面。

[pure virtual] QSurfaceFormat QSurface::format() const

返回曲面的格式。

[pure virtual] QSize QSurface::size() const

返回曲面的大小(以像素为单位)。

bool QSurface::supportsOpenGL() const

如果该表面与 OpenGL 兼容且可与 `QOpenGLContext` 配合使用,则返回 true;否则返回 false。

QSurface::SurfaceClass QSurface::surfaceClass() const

返回此曲面的曲面类。

[pure virtual] QPlatformSurface *QSurface::surfaceHandle() const

返回该画布在特定平台上的实现的句柄。

[pure virtual] QSurface::SurfaceType QSurface::surfaceType() const

返回曲面的类型。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.