QSurface Class

The QSurface class is an abstraction of renderable surfaces in Qt. More...

Header: #include <QSurface>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Since: Qt 5.0
Inherited By:

QOffscreenSurface and QWindow

Public Types

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

Public Functions

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

Protected Functions

QSurface(QSurface::SurfaceClass type)

Detailed Description

The size of the surface is accessible with the size() function. The rendering specific attributes of the surface are accessible through the format() function.

Member Type Documentation

enum QSurface::SurfaceClass

The SurfaceClass enum describes the actual subclass of the surface.

ConstantValueDescription
QSurface::Window0The surface is an instance of QWindow.
QSurface::Offscreen1The surface is an instance of QOffscreenSurface.

enum QSurface::SurfaceType

The SurfaceType enum describes what type of surface this is.

ConstantValueDescription
QSurface::RasterSurface0The surface is is composed of pixels and can be rendered to using a software rasterizer like Qt's raster paint engine.
QSurface::OpenGLSurface1The surface is an OpenGL compatible surface and can be used in conjunction with QOpenGLContext.
QSurface::RasterGLSurface2The surface can be rendered to using a software rasterizer, and also supports OpenGL. This surface type is intended for internal Qt use, and requires the use of private API.
QSurface::OpenVGSurface3The surface is an OpenVG compatible surface and can be used in conjunction with OpenVG contexts.
QSurface::VulkanSurface4The surface is a Vulkan compatible surface and can be used in conjunction with the Vulkan graphics API.
QSurface::MetalSurface5The surface is a Metal compatible surface and can be used in conjunction with Apple's Metal graphics API. This surface type is supported on macOS only.
QSurface::Direct3DSurface6The surface is a Direct 3D 11 and 12 compatible surface and can be used in conjunction with the DXGI and Direct3D APIs. This surface type is supported on Windows only.

Member Function Documentation

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

Creates a surface with the given type.

[virtual] QSurface::~QSurface()

Destroys the surface.

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

Returns the format of the surface.

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

Returns the size of the surface in pixels.

[since 5.3] bool QSurface::supportsOpenGL() const

Returns true if the surface is OpenGL compatible and can be used in conjunction with QOpenGLContext; otherwise returns false.

This function was introduced in Qt 5.3.

QSurface::SurfaceClass QSurface::surfaceClass() const

Returns the surface class of this surface.

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

Returns a handle to the platform-specific implementation of the surface.

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

Returns the type of the surface.