- Qt 6.8
- Qt GUI
- C++ Classes
- QSurface
- Qt 6.8.1 Reference Documentation

# QSurface Class

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

Header: | `#include <QSurface>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Gui)` `target_link_libraries(mytarget PRIVATE Qt6::Gui)`
qmake: | `QT += gui`
Inherited By: | QOffscreenSurface and QWindow

- List of all members, including inherited members

## 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.

Constant | Value | Description
--- | --- | ---
`QSurface::Window` | `0` | The surface is an instance of QWindow.
`QSurface::Offscreen` | `1` | The surface is an instance of QOffscreenSurface.

### enum QSurface::SurfaceType

The SurfaceType enum describes what type of surface this is.

Constant | Value | Description
--- | --- | ---
`QSurface::RasterSurface` | `0` | The surface is composed of pixels and can be rendered to using a software rasterizer like Qt's raster paint engine.
`QSurface::OpenGLSurface` | `1` | The surface is an OpenGL compatible surface and can be used in conjunction with QOpenGLContext.
`QSurface::RasterGLSurface` | `2` | The 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::OpenVGSurface` | `3` | The surface is an OpenVG compatible surface and can be used in conjunction with OpenVG contexts.
`QSurface::VulkanSurface` | `4` | The surface is a Vulkan compatible surface and can be used in conjunction with the Vulkan graphics API.
`QSurface::MetalSurface` | `5` | The surface is a Metal compatible surface and can be used in conjunction with Apple's Metal graphics API. This surface type is only supported on macOS and iOS.
`QSurface::Direct3DSurface` | `6` | The 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 only supported on Windows.

## Member Function Documentation

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

Creates a surface with the given type.

### `[virtual noexcept]` 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.

### bool QSurface::supportsOpenGL() const

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

### 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.