QScreen Class | Qt GUI | Qt 6.11.2
Description: The QScreen class is used to query screen properties.

- Qt 6.11
- Qt GUI
- C++ Classes
- QScreen
- Qt 6.11.2 Reference Documentation

# QScreen Class

The QScreen class is used to query screen properties. More...

Header: | `#include <QScreen>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Gui)` `target_link_libraries(mytarget PRIVATE Qt6::Gui)`
qmake: | `QT += gui`
Inherits: | QObject

- List of all members, including inherited members

## Properties

availableGeometry : QRect availableSize : QSize availableVirtualGeometry : QRect availableVirtualSize : QSize depth : const int devicePixelRatio : qreal geometry : QRect logicalDotsPerInch : qreal logicalDotsPerInchX : qreal logicalDotsPerInchY : qreal manufacturer : const QString model : const QString name : const QString | nativeOrientation : Qt::ScreenOrientation orientation : Qt::ScreenOrientation physicalDotsPerInch : qreal physicalDotsPerInchX : qreal physicalDotsPerInchY : qreal physicalSize : QSizeF primaryOrientation : Qt::ScreenOrientation refreshRate : qreal serialNumber : const QString size : QSize virtualGeometry : QRect virtualSize : QSize

## Public Functions

int | angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const
QRect | availableGeometry() const
QSize | availableSize() const
QRect | availableVirtualGeometry() const
QSize | availableVirtualSize() const
int | depth() const
qreal | devicePixelRatio() const
QRect | geometry() const
QPixmap | grabWindow(WId window = 0, int x = 0, int y = 0, int width = -1, int height = -1)
QPlatformScreen * | handle() const
bool | isLandscape(Qt::ScreenOrientation o) const
bool | isPortrait(Qt::ScreenOrientation o) const
qreal | logicalDotsPerInch() const
qreal | logicalDotsPerInchX() const
qreal | logicalDotsPerInchY() const
QString | manufacturer() const
QRect | mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect) const
QString | model() const
QString | name() const
QNativeInterface * | nativeInterface() const
Qt::ScreenOrientation | nativeOrientation() const
Qt::ScreenOrientation | orientation() const
qreal | physicalDotsPerInch() const
qreal | physicalDotsPerInchX() const
qreal | physicalDotsPerInchY() const
QSizeF | physicalSize() const
Qt::ScreenOrientation | primaryOrientation() const
qreal | refreshRate() const
QString | serialNumber() const
QSize | size() const
QTransform | transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target) const
QRect | virtualGeometry() const
QScreen * | virtualSiblingAt(QPoint point)
QList<QScreen *> | virtualSiblings() const
QSize | virtualSize() const

## Signals

void | availableGeometryChanged(const QRect &geometry)
void | geometryChanged(const QRect &geometry)
void | logicalDotsPerInchChanged(qreal dpi)
void | orientationChanged(Qt::ScreenOrientation orientation)
void | physicalDotsPerInchChanged(qreal dpi)
void | physicalSizeChanged(const QSizeF &size)
void | primaryOrientationChanged(Qt::ScreenOrientation orientation)
void | refreshRateChanged(qreal refreshRate)
void | virtualGeometryChanged(const QRect &rect)

## Detailed Description

A note on logical vs physical dots per inch: physical DPI is based on the actual physical pixel sizes when available, and is useful for print preview and other cases where it's desirable to know the exact physical dimensions of screen displayed contents.

Logical dots per inch are used to convert font and user interface elements from point sizes to pixel sizes, and might be different from the physical dots per inch. The logical dots per inch are sometimes user-settable in the desktop environment's settings panel, to let the user globally control UI and font sizes in different applications.

Note: Both physical and logical DPI are expressed in device-independent dots. Multiply by QScreen::devicePixelRatio() to get device-dependent density.

To obtain a QScreen object, use QGuiApplication::primaryScreen() for the primary screen, or QGuiApplication::screens() to get a list of all screens.

See also QGuiApplication::primaryScreen() and QGuiApplication::screens().

## Property Documentation

### `[read-only]` availableGeometry : QRect

This property holds the screen's available geometry in pixels

The available geometry is the geometry excluding window manager reserved areas such as task bars and system menus.

Note, on X11 this will return the true available geometry only on systems with one monitor and if window manager has set _NET_WORKAREA atom. In all other cases this is equal to geometry(). This is a limitation in X11 window manager specification.

Access functions:

QRect | availableGeometry() const

Notifier signal:

void | availableGeometryChanged(const QRect &geometry)

### `[read-only]` availableSize : QSize

This property holds the screen's available size in pixels

The available size is the size excluding window manager reserved areas such as task bars and system menus.

Access functions:

QSize | availableSize() const

Notifier signal:

void | availableGeometryChanged(const QRect &geometry)

### `[read-only]` availableVirtualGeometry : QRect

This property holds the available geometry of the virtual desktop to which this screen belongs

Returns the available geometry of the virtual desktop corresponding to this screen.

This is the union of the virtual siblings' individual available geometries.

Access functions:

QRect | availableVirtualGeometry() const

Notifier signal:

void | virtualGeometryChanged(const QRect &rect)

See also availableGeometry() and virtualSiblings().

### `[read-only]` availableVirtualSize : QSize

This property holds the available size of the virtual desktop to which this screen belongs

Returns the available pixel size of the virtual desktop corresponding to this screen.

This is the combined size of the virtual siblings' individual available geometries.

Access functions:

QSize | availableVirtualSize() const

Notifier signal:

void | virtualGeometryChanged(const QRect &rect)

See also availableSize() and virtualSiblings().

### `[read-only]` depth : const int

This property holds the color depth of the screen

Access functions:

int | depth() const

### `[read-only]` devicePixelRatio : qreal

This property holds the screen's ratio between physical pixels and device-independent pixels

Returns the ratio between physical pixels and device-independent pixels for the screen.

This function may return a value that differs from QWindow::devicePixelRatio(), for instance on Wayland when using fractional scaling, or if window properties that affect surface resolution are set. Prefer using QWindow::devicePixelRatio().

Note: On some platforms the devicePixelRatio of a window and the screen it is on can be different. Use this function only when you don't know which window you are targeting. If you do know the target window, use QWindow::devicePixelRatio() instead.

Access functions:

qreal | devicePixelRatio() const

Notifier signal:

void | physicalDotsPerInchChanged(qreal dpi)

See also QWindow::devicePixelRatio() and QGuiApplication::devicePixelRatio().

### `[read-only]` geometry : QRect

This property holds the screen's geometry in pixels

As an example this might return QRect(0, 0, 1280, 1024), or in a virtual desktop setting QRect(1280, 0, 1280, 1024).

Access functions:

QRect | geometry() const

Notifier signal:

void | geometryChanged(const QRect &geometry)

### `[read-only]` logicalDotsPerInch : qreal

This property holds the number of logical dots or pixels per inch

This value can be used to convert font point sizes to pixel sizes.

This is a convenience property that's simply the average of the logicalDotsPerInchX and logicalDotsPerInchY properties.

Access functions:

qreal | logicalDotsPerInch() const

Notifier signal:

void | logicalDotsPerInchChanged(qreal dpi)

See also logicalDotsPerInchX() and logicalDotsPerInchY().

### `[read-only]` logicalDotsPerInchX : qreal

This property holds the number of logical dots or pixels per inch in the horizontal direction

This value is used to convert font point sizes to pixel sizes.

Access functions:

qreal | logicalDotsPerInchX() const

Notifier signal:

void | logicalDotsPerInchChanged(qreal dpi)

See also logicalDotsPerInchY().

### `[read-only]` logicalDotsPerInchY : qreal

This property holds the number of logical dots or pixels per inch in the vertical direction

This value is used to convert font point sizes to pixel sizes.

Access functions:

qreal | logicalDotsPerInchY() const

Notifier signal:

void | logicalDotsPerInchChanged(qreal dpi)

See also logicalDotsPerInchX().

### `[read-only]` manufacturer : const QString

This property holds the manufacturer of the screen

Access functions:

QString | manufacturer() const

### `[read-only]` model : const QString

This property holds the model of the screen

Access functions:

QString | model() const

### `[read-only]` name : const QString

This property holds a user presentable string representing the screen

For example, on X11 these correspond to the XRandr screen names, typically "VGA1", "HDMI1", etc.

Note: The user presentable string is not guaranteed to match the result of any native APIs, and should not be used to uniquely identify a screen.

Access functions:

QString | name() const

### `[read-only]` nativeOrientation : Qt::ScreenOrientation

This property holds the native screen orientation

The native orientation of the screen is the orientation where the logo sticker of the device appears the right way up, or Qt::PrimaryOrientation if the platform does not support this functionality.

The native orientation is a property of the hardware, and does not change.

Access functions:

Qt::ScreenOrientation | nativeOrientation() const

### `[read-only]` orientation : Qt::ScreenOrientation

This property holds the screen orientation

The `orientation` property tells the orientation of the screen from the window system perspective.

Most mobile devices and tablet computers contain accelerometer sensors. The Qt Sensors module provides the ability to read this sensor directly. However, the windowing system may rotate the entire screen automatically based on how it is being held; in that case, this `orientation` property will change.

Access functions:

Qt::ScreenOrientation | orientation() const

Notifier signal:

void | orientationChanged(Qt::ScreenOrientation orientation)

See also primaryOrientation() and QWindow::contentOrientation().

### `[read-only]` physicalDotsPerInch : qreal

This property holds the number of physical dots or pixels per inch

This value represents the pixel density on the screen's display. Depending on what information the underlying system provides the value might not be entirely accurate.

This is a convenience property that's simply the average of the physicalDotsPerInchX and physicalDotsPerInchY properties.

Note: Physical DPI is expressed in device-independent dots. Multiply by QScreen::devicePixelRatio() to get device-dependent density.

Access functions:

qreal | physicalDotsPerInch() const

Notifier signal:

void | physicalDotsPerInchChanged(qreal dpi)

See also physicalDotsPerInchX() and physicalDotsPerInchY().

### `[read-only]` physicalDotsPerInchX : qreal

This property holds the number of physical dots or pixels per inch in the horizontal direction

This value represents the actual horizontal pixel density on the screen's display. Depending on what information the underlying system provides the value might not be entirely accurate.

Note: Physical DPI is expressed in device-independent dots. Multiply by QScreen::devicePixelRatio() to get device-dependent density.

Access functions:

qreal | physicalDotsPerInchX() const

Notifier signal:

void | physicalDotsPerInchChanged(qreal dpi)

See also physicalDotsPerInchY().

### `[read-only]` physicalDotsPerInchY : qreal

This property holds the number of physical dots or pixels per inch in the vertical direction

This value represents the actual vertical pixel density on the screen's display. Depending on what information the underlying system provides the value might not be entirely accurate.

Note: Physical DPI is expressed in device-independent dots. Multiply by QScreen::devicePixelRatio() to get device-dependent density.

Access functions:

qreal | physicalDotsPerInchY() const

Notifier signal:

void | physicalDotsPerInchChanged(qreal dpi)

See also physicalDotsPerInchX().

### `[read-only]` physicalSize : QSizeF

This property holds the screen's physical size (in millimeters)

The physical size represents the actual physical dimensions of the screen's display.

Depending on what information the underlying system provides the value might not be entirely accurate.

Access functions:

QSizeF | physicalSize() const

Notifier signal:

void | physicalSizeChanged(const QSizeF &size)

### `[read-only]` primaryOrientation : Qt::ScreenOrientation

This property holds the primary screen orientation

The primary screen orientation is Qt::LandscapeOrientation if the screen geometry's width is greater than or equal to its height, or Qt::PortraitOrientation otherwise. This property might change when the screen orientation was changed (i.e. when the display is rotated). The behavior is however platform dependent and can often be specified in an application manifest file.

Access functions:

Qt::ScreenOrientation | primaryOrientation() const

Notifier signal:

void | primaryOrientationChanged(Qt::ScreenOrientation orientation)

### `[read-only]` refreshRate : qreal

This property holds the approximate vertical refresh rate of the screen in Hz

Warning: Avoid using the screen's refresh rate to drive animations via a timer such as QChronoTimer. Instead use QWindow::requestUpdate().

Access functions:

qreal | refreshRate() const

Notifier signal:

void | refreshRateChanged(qreal refreshRate)

See also QWindow::requestUpdate().

### `[read-only]` serialNumber : const QString

This property holds the serial number of the screen

Access functions:

QString | serialNumber() const

### `[read-only]` size : QSize

This property holds the pixel resolution of the screen

Access functions:

QSize | size() const

Notifier signal:

void | geometryChanged(const QRect &geometry)

### `[read-only]` virtualGeometry : QRect

This property holds the pixel geometry of the virtual desktop to which this screen belongs

Returns the pixel geometry of the virtual desktop corresponding to this screen.

This is the union of the virtual siblings' individual geometries.

Access functions:

QRect | virtualGeometry() const

Notifier signal:

void | virtualGeometryChanged(const QRect &rect)

See also virtualSiblings().

### `[read-only]` virtualSize : QSize

This property holds the pixel size of the virtual desktop to which this screen belongs

Returns the pixel size of the virtual desktop corresponding to this screen.

This is the combined size of the virtual siblings' individual geometries.

Access functions:

QSize | virtualSize() const

Notifier signal:

void | virtualGeometryChanged(const QRect &rect)

See also virtualSiblings().

## Member Function Documentation

### int QScreen::angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const

Convenience function to compute the angle of rotation to get from rotation a to rotation b.

The result will be 0, 90, 180, or 270.

Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().

### QPixmap QScreen::grabWindow(WId window = 0, int x = 0, int y = 0, int width = -1, int height = -1)

Creates and returns a pixmap constructed by grabbing the contents of the given window restricted by QRect(x, y, width, height). If window is 0, then the entire screen will be grabbed.

The arguments (x, y) specify the offset in the window, whereas (width, height) specify the area to be copied. If width is negative, the function copies everything to the right border of the window. If height is negative, the function copies everything to the bottom of the window.

The offset and size arguments are specified in device independent pixels. The returned pixmap may be larger than the requested size when grabbing from a high-DPI screen. Call QPixmap::devicePixelRatio() to determine if this is the case.

The window system identifier (`WId`) can be retrieved using the QWidget::winId() function. The rationale for using a window identifier and not a QWidget, is to enable grabbing of windows that are not part of the application, window system frames, and so on.

When window is 0, the behavior is platform-dependent.

- On platforms where coordinates are screen-local (Windows, X11), (x, y) are relative to this screen's origin.
- On platforms where coordinates are global (macOS), (x, y) are relative to the virtual desktop. This requires callers to subtract `screen->geometry().topLeft()` to achieve the same result as on Windows.

To grab the entire screen portably across platforms, use `grabWindow(0)` without specifying coordinates. Code that grabs a sub-area must account for this difference explicitly.

Warning: Grabbing windows that are not part of the application is not supported on systems such as iOS, where sandboxing/security prevents reading pixels of windows not owned by the application.

The grabWindow() function grabs pixels from the screen, not from the window, i.e. if there is another window partially or entirely over the one you grab, you get pixels from the overlying window, too. The mouse cursor is generally not grabbed.

Note on X11 that if the given window doesn't have the same depth as the root window, and another window partially or entirely obscures the one you grab, you will not get pixels from the overlying window. The contents of the obscured areas in the pixmap will be undefined and uninitialized.

On Windows Vista and above grabbing a layered window, which is created by setting the Qt::WA_TranslucentBackground attribute, will not work. Instead grabbing the desktop widget should work.

Warning: In general, grabbing an area outside the screen is not safe. This depends on the underlying window system.

### QPlatformScreen *QScreen::handle() const

Get the platform screen handle.

See also Qt Platform Abstraction (QPA).

### bool QScreen::isLandscape(Qt::ScreenOrientation o) const

Convenience function that returns `true` if o is either landscape or inverted landscape; otherwise returns `false`.

Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().

### bool QScreen::isPortrait(Qt::ScreenOrientation o) const

Convenience function that returns `true` if o is either portrait or inverted portrait; otherwise returns `false`.

Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().

### QRect QScreen::mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect) const

Maps the rect between two screen orientations.

This will flip the x and y dimensions of the rectangle rect if the orientation a is Qt::PortraitOrientation or Qt::InvertedPortraitOrientation and orientation b is Qt::LandscapeOrientation or Qt::InvertedLandscapeOrientation, or vice versa.

Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().

### template <typename QNativeInterface> QNativeInterface *QScreen::nativeInterface() const

Returns a native interface of the given type for the screen.

This function provides access to platform specific functionality of QScreen, as defined in the QNativeInterface namespace:

QNativeInterface::QAndroidScreen | Native interface to a screen
QNativeInterface::QCocoaScreen | Native interface to a screen on macOS
QNativeInterface::QWaylandScreen | Native interface to a screen on Wayland
QNativeInterface::QWindowsScreen | Native interface to a screen

If the requested interface is not available a `nullptr` is returned.

### `[signal]` void QScreen::orientationChanged(Qt::ScreenOrientation orientation)

This signal is emitted when the orientation of the screen changes with orientation as an argument.

Note: Notifier signal for property orientation.

See also orientation().

### `[signal]` void QScreen::primaryOrientationChanged(Qt::ScreenOrientation orientation)

This signal is emitted when the primary orientation of the screen changes with orientation as an argument.

Note: Notifier signal for property primaryOrientation.

See also primaryOrientation().

### QTransform QScreen::transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target) const

Convenience function to compute a transform that maps from the coordinate system defined by orientation a into the coordinate system defined by orientation b and target dimensions target.

Example, a is Qt::Landscape, b is Qt::Portrait, and target is QRect(0, 0, w, h) the resulting transform will be such that the point QPoint(0, 0) is mapped to QPoint(0, w), and QPoint(h, w) is mapped to QPoint(0, h). Thus, the landscape coordinate system QRect(0, 0, h, w) is mapped (with a 90 degree rotation) into the portrait coordinate system QRect(0, 0, w, h).

Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().

### QScreen *QScreen::virtualSiblingAt(QPoint point)

Returns the screen at point within the set of QScreen::virtualSiblings(), or `nullptr` if outside of any screen.

The point is in relation to the virtualGeometry() of each set of virtual siblings.

### QList<QScreen *> QScreen::virtualSiblings() const

Get the screen's virtual siblings.

The virtual siblings are the screen instances sharing the same virtual desktop. They share a common coordinate system, and windows can freely be moved or positioned across them without having to be re-created.