QScreen Class
QScreen 类用于查询屏幕属性。更多内容...
| 头文件: | #include <QScreen> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 继承自: | QObject |
属性
|
|
公共函数
| 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 |
信号
| 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) |
详细说明
关于逻辑 DPI 与物理 DPI 的说明:物理 DPI 基于实际的物理像素尺寸(如有),适用于打印预览以及其他需要了解屏幕显示内容确切物理尺寸的情况。
逻辑每英寸点数用于将字体和用户界面元素从点大小转换为像素大小,可能与物理每英寸点数不同。在桌面环境的设置面板中,用户有时可以自行设置逻辑每英寸点数,从而全局控制不同应用程序中的 UI 和字体大小。
注意: 物理 DPI 和逻辑 DPI均以 设备独立的点为单位表示。乘以QScreen::devicePixelRatio() 可获得设备相关的密度。
要获取 QScreen 对象,请使用QGuiApplication::primaryScreen() 获取主屏幕,或使用QGuiApplication::screens() 获取所有屏幕的列表。
另请参阅 QGuiApplication::primaryScreen() 和QGuiApplication::screens()。
属性文档
[read-only] availableGeometry : QRect
该属性以像素为单位存储屏幕的可用几何尺寸
可用几何尺寸是指排除窗口管理器预留区域(如任务栏和系统菜单)后的几何尺寸。
请注意,在 X11 环境中,此函数仅在单显示器系统上,且当窗口管理器已设置 _NET_WORKAREA 原子时,才会返回真正的可用几何尺寸。在所有其他情况下,其返回值等于 `geometry()`。这是 X11 窗口管理器规范中的一个限制。
访问函数:
| QRect | availableGeometry() const |
通知器信号:
| void | availableGeometryChanged(const QRect &geometry) |
[read-only] availableSize : QSize
该属性存储屏幕的可用尺寸(以像素为单位)
可用尺寸是指不包括窗口管理器预留区域(如任务栏和系统菜单)的尺寸。
访问函数:
| QSize | availableSize() const |
通知信号:
| void | availableGeometryChanged(const QRect &geometry) |
[read-only] availableVirtualGeometry : QRect
该属性存储了此屏幕所属的虚拟桌面的可用几何信息
返回与该屏幕对应的虚拟桌面的可用几何参数。
这是该屏幕所属的虚拟兄弟窗口各自可用几何属性的并集。
访问函数:
| QRect | availableVirtualGeometry() const |
通知信号:
| void | virtualGeometryChanged(const QRect &rect) |
另请参见 availableGeometry() 和virtualSiblings()。
[read-only] availableVirtualSize : QSize
该属性存储了此屏幕所属的虚拟桌面的可用大小
返回与该屏幕对应的虚拟桌面的可用像素尺寸。
这是虚拟兄弟窗口各自可用几何尺寸的总和。
访问函数:
| QSize | availableVirtualSize() const |
通知信号:
| void | virtualGeometryChanged(const QRect &rect) |
另请参阅 availableSize() 和virtualSiblings()。
[read-only] depth : const int
该属性存储屏幕的色深
访问函数:
| int | depth() const |
[read-only] devicePixelRatio : qreal
该属性存储屏幕中物理像素与设备独立像素之间的比例
返回屏幕上物理像素与设备独立像素之间的比例。
该函数返回的值可能与 `QWindow::devicePixelRatio()` 不同,例如在 Wayland 上使用分数缩放时,或者当设置了影响表面分辨率的窗口属性时。建议优先使用 `QWindow::devicePixelRatio()`。
注意:在 某些平台上, 窗口的 devicePixelRatio 与其所在屏幕的 devicePixelRatio 可能不同。仅当您不知道目标窗口时才应使用此函数。如果已知目标窗口,请改用QWindow::devicePixelRatio()。
访问函数:
| qreal | devicePixelRatio() const |
通知信号:
| void | physicalDotsPerInchChanged(qreal dpi) |
另请参阅 QWindow::devicePixelRatio() 和QGuiApplication::devicePixelRatio()。
[read-only] geometry : QRect
该属性以像素为单位存储屏幕的几何参数
例如,该属性可能返回QRect (0, 0, 1280, 1024),或者在虚拟桌面环境中返回QRect (1280, 0, 1280, 1024)。
访问函数:
| QRect | geometry() const |
通知信号:
| void | geometryChanged(const QRect &geometry) |
[read-only] logicalDotsPerInch : qreal
该属性表示每英寸的逻辑点数或像素数
该值可用于将字体点大小转换为像素大小。
这是一个便捷属性,仅为logicalDotsPerInchX 和logicalDotsPerInchY 属性的平均值。
访问函数:
| qreal | logicalDotsPerInch() const |
通知信号:
| void | logicalDotsPerInchChanged(qreal dpi) |
另请参阅 logicalDotsPerInchX() 和logicalDotsPerInchY()。
[read-only] logicalDotsPerInchX : qreal
该属性存储水平方向上每英寸的逻辑点数或像素数
该值用于将字体点大小转换为像素大小。
访问函数:
| qreal | logicalDotsPerInchX() const |
通知信号:
| void | logicalDotsPerInchChanged(qreal dpi) |
另请参阅 logicalDotsPerInchY()。
[read-only] logicalDotsPerInchY : qreal
该属性表示垂直方向上每英寸的逻辑点数或像素数
该值用于将字体点大小转换为像素大小。
访问函数:
| qreal | logicalDotsPerInchY() const |
通知信号:
| void | logicalDotsPerInchChanged(qreal dpi) |
另请参阅 logicalDotsPerInchX()。
[read-only] manufacturer : const QString
该属性存储屏幕的制造商
访问功能:
| QString | manufacturer() const |
[read-only] model : const QString
该属性保存了屏幕的模型
访问函数:
| QString | model() const |
[read-only] name : const QString
该属性存储一个可由用户显示的字符串,用于表示屏幕
例如,在 X11 环境中,这些名称对应于 XRandr 屏幕名称,通常为“VGA1”、“HDMI1”等。
注意: 无法保证该 用户可视字符串与任何原生 API 的结果一致,且不应用于唯一标识屏幕。
访问函数:
| QString | name() const |
[read-only] nativeOrientation : Qt::ScreenOrientation
该属性保存原生屏幕方向
屏幕的原生方向是指设备上的徽标贴纸呈现正向的方向;如果平台不支持此功能,则为Qt::PrimaryOrientation 。
原生方向是硬件的属性,不会发生变化。
访问函数:
| Qt::ScreenOrientation | nativeOrientation() const |
[read-only] orientation : Qt::ScreenOrientation
该属性表示屏幕的朝向
orientation 属性从窗口系统的角度反映屏幕的朝向。
大多数移动设备和平板电脑都配备了加速度计传感器。Qt Sensors 模块提供了直接读取该传感器数据的功能。但是,窗口系统可能会根据设备持握方式自动旋转整个屏幕;在这种情况下,orientation 属性将会发生变化。
访问函数:
| Qt::ScreenOrientation | orientation() const |
通知器信号:
| void | orientationChanged(Qt::ScreenOrientation orientation) |
另请参阅 primaryOrientation() 和QWindow::contentOrientation()。
[read-only] physicalDotsPerInch : qreal
该属性表示每英寸的物理点数或像素数
该值代表屏幕显示的像素密度。根据底层系统提供的信息不同,该值可能并非完全准确。
这是一个便利属性,仅为physicalDotsPerInchX 和physicalDotsPerInchY 属性的平均值。
注意:物理 DPI 以与设备无关的点为单位表示。乘以QScreen::devicePixelRatio() 可获得与设备相关的密度。
访问函数:
| qreal | physicalDotsPerInch() const |
通知信号:
| void | physicalDotsPerInchChanged(qreal dpi) |
另请参阅 physicalDotsPerInchX() 和physicalDotsPerInchY()。
[read-only] physicalDotsPerInchX : qreal
该属性表示水平方向上每英寸的物理点数或像素数
该值代表屏幕显示上的实际水平像素密度。根据底层系统提供的信息不同,该值可能并不完全准确。
注意:物理 DPI 以与设备无关的点为单位表示。乘以QScreen::devicePixelRatio() 可获得与设备相关的密度。
访问函数:
| qreal | physicalDotsPerInchX() const |
通知信号:
| void | physicalDotsPerInchChanged(qreal dpi) |
另请参阅 physicalDotsPerInchY()。
[read-only] physicalDotsPerInchY : qreal
该属性表示垂直方向上每英寸的物理点数或像素数
该值表示屏幕显示的实际垂直像素密度。根据底层系统提供的信息不同,该值可能并非完全准确。
注意:物理 DPI 以设备无关的点数表示。乘以QScreen::devicePixelRatio() 可获得设备相关的密度。
访问函数:
| qreal | physicalDotsPerInchY() const |
通知信号:
| void | physicalDotsPerInchChanged(qreal dpi) |
另请参阅 physicalDotsPerInchX()。
[read-only] physicalSize : QSizeF
该属性存储屏幕的物理尺寸(以毫米为单位)
物理尺寸代表屏幕显示区域的实际物理尺寸。
根据底层系统提供的信息不同,该值可能并非完全准确。
访问函数:
| QSizeF | physicalSize() const |
通知器信号:
| void | physicalSizeChanged(const QSizeF &size) |
[read-only] primaryOrientation : Qt::ScreenOrientation
该属性存储主屏幕方向
如果屏幕几何形状的宽度大于或等于其高度,则主屏幕方向为Qt::LandscapeOrientation ;否则为Qt::PortraitOrientation 。当屏幕方向发生变化(即显示器旋转时),此属性可能会发生变化。不过,该行为取决于平台,通常可在应用程序清单文件中进行指定。
访问函数:
| Qt::ScreenOrientation | primaryOrientation() const |
通知器信号:
| void | primaryOrientationChanged(Qt::ScreenOrientation orientation) |
[read-only] refreshRate : qreal
该属性表示屏幕的大致垂直刷新率(单位:赫兹)
警告:请避免 使用屏幕的刷新率通过定时器(如 `QChronoTimer`)来驱动动画。请改用 `QWindow::requestUpdate()`。
访问函数:
| qreal | refreshRate() const |
通知器信号:
| void | refreshRateChanged(qreal refreshRate) |
另请参阅 QWindow::requestUpdate()。
[read-only] serialNumber : const QString
该属性存储屏幕的序列号
访问函数:
| QString | serialNumber() const |
[read-only] size : QSize
该属性存储屏幕的像素分辨率
访问函数:
| QSize | size() const |
通知信号:
| void | geometryChanged(const QRect &geometry) |
[read-only] virtualGeometry : QRect
该属性存储了该屏幕所属的虚拟桌面的像素几何信息
返回与该屏幕对应的虚拟桌面的像素几何信息。
这是虚拟同级窗口各自几何信息的并集。
访问函数:
| QRect | virtualGeometry() const |
通知信号:
| void | virtualGeometryChanged(const QRect &rect) |
另请参阅 ` virtualSiblings()`。
[read-only] virtualSize : QSize
该属性存储了该屏幕所属的虚拟桌面的像素尺寸
返回与该屏幕对应的虚拟桌面的像素尺寸。
这是虚拟兄弟窗口各自几何参数的总和。
访问函数:
| QSize | virtualSize() const |
通知信号:
| void | virtualGeometryChanged(const QRect &rect) |
另请参阅 virtualSiblings()。
成员函数文档
int QScreen::angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const
一个便捷函数,用于计算从旋转a 转换为旋转b 所需的旋转角度。
结果将为 0、90、180 或 270。
Qt::PrimaryOrientation 被解释为屏幕的primaryOrientation()。
QPixmap QScreen::grabWindow(WId window = 0, int x = 0, int y = 0, int width = -1, int height = -1)
创建并返回一个像素图,该像素图通过抓取给定window 的内容并受QRect (x 、y 、width 、height )的限制而构建。如果window 为0,则将抓取整个屏幕。
参数 (x,y) 指定窗口中的偏移量,而 (width,height) 指定要复制的区域。如果width 为负值,则该函数将所有内容复制到窗口的右边界;如果height 为负值,则该函数将所有内容复制到窗口的底部。
偏移量和大小参数以设备独立像素为单位指定。从高DPI屏幕抓取时,返回的像素图可能大于请求的大小。请调用QPixmap::devicePixelRatio() 函数来确定是否出现这种情况。
窗口系统标识符(WId )可通过QWidget::winId()函数获取。使用窗口标识符而非QWidget 的理由是,以便能够捕获不属于应用程序的窗口、窗口系统帧等。
当window 为0 时,其行为取决于平台。
- 在坐标为屏幕本地的平台上(Windows、X11),(x,y) 相对于该屏幕的原点。
- 在坐标为全局坐标的平台上(macOS),(x,y) 以虚拟桌面为基准。这要求调用者减去
screen->geometry().topLeft()才能得到与 Windows 上相同的结果。
若要在不同平台间通用地捕获整个屏幕,请使用grabWindow(0) 且不指定坐标。捕获子区域的代码必须明确考虑这一差异。
警告: 在 iOS 等系统上,不支持抓取 不属于该应用程序的窗口,因为沙盒/安全机制会阻止读取非该应用程序拥有的窗口的像素。
grabWindow() 函数从屏幕上捕获像素,而非从窗口中捕获,也就是说,如果另一个窗口部分或完全覆盖了你要捕获的窗口,你也会获得覆盖窗口的像素。通常不会捕获鼠标光标。
关于 X11 的注意事项:如果给定的“window ”深度与根窗口不同,且另一个窗口部分或完全遮挡了你要抓取的窗口,则不会获取到覆盖窗口的像素。像素图中被遮挡区域的内容将未定义且未初始化。
在 Windows Vista 及更高版本中,抓取通过设置Qt::WA_TranslucentBackground 属性创建的分层窗口将无法正常工作。取而代之的是,抓取桌面控件应该可以正常工作。
警告:通常情况下 ,抓取屏幕外的区域是不安全的。这取决于底层的窗口系统。
QPlatformScreen *QScreen::handle() const
获取站台屏幕手柄。
另请参阅 Qt 平台抽象 (QPA)。
bool QScreen::isLandscape(Qt::ScreenOrientation o) const
一个便捷函数,如果o 为横向或倒置横向,则返回true ;否则返回false 。
Qt::PrimaryOrientation 被解释为屏幕的primaryOrientation()。
bool QScreen::isPortrait(Qt::ScreenOrientation o) const
一个便捷函数,如果o 为纵向或倒置纵向,则返回true ;否则返回false 。
Qt::PrimaryOrientation 被解释为屏幕的primaryOrientation()。
QRect QScreen::mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect) const
在两种屏幕方向之间映射矩形。
如果屏幕方向a 为Qt::PortraitOrientation 或Qt::InvertedPortraitOrientation ,且屏幕方向b 为Qt::LandscapeOrientation 或Qt::InvertedLandscapeOrientation ,则会翻转矩形rect 的 x 和 y 维度;反之亦然。
Qt::PrimaryOrientation 被解释为屏幕的primaryOrientation()。
template <typename QNativeInterface> QNativeInterface *QScreen::nativeInterface() const
返回屏幕的指定类型的本机接口。
该函数提供了对QScreen 中平台特定功能的访问,这些功能在QNativeInterface 命名空间中定义:
屏幕的原生接口 | |
macOS 上屏幕的原生接口 | |
Wayland 系统上屏幕的原生接口 | |
屏幕的原生接口 |
如果请求的接口不可用,则返回一个 `nullptr `。
[signal] void QScreen::orientationChanged(Qt::ScreenOrientation orientation)
当屏幕方向发生变化时,会发出此信号,其参数为orientation 。
注意: 这是属性 `orientation`的通知器 信号。
另请参阅 orientation()。
[signal] void QScreen::primaryOrientationChanged(Qt::ScreenOrientation orientation)
当屏幕的主方向发生变化时,会发出此信号,并以orientation 作为参数。
注意: 这是属性primaryOrientation 的通知器 信号。
另请参阅 primaryOrientation()。
QTransform QScreen::transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target) const
一个便捷函数,用于计算将由方向a 定义的坐标系映射到由方向b 和目标尺寸target 定义的坐标系的变换。
例如,当a 为 Qt::Landscape、b 为 Qt::Portrait、target 为QRect(0, 0, w, h) 时,生成的变换将使得点QPoint(0, 0) 映射到QPoint(0, w),而点QPoint(h, w) 映射到QPoint(0, h)。 因此,横向坐标系QRect(0, 0, h, w) 被映射(并旋转 90 度)到纵向坐标系QRect(0, 0, w, h)。
Qt::PrimaryOrientation 被解释为屏幕的primaryOrientation()。
QScreen *QScreen::virtualSiblingAt(QPoint point)
返回位于point 的屏幕(若该屏幕属于QScreen::virtualSiblings() 集合中),或返回nullptr (若不在任何屏幕集合中)。
该point 是相对于每组虚拟兄弟元素的virtualGeometry()而言的。
QList<QScreen *> QScreen::virtualSiblings() 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.