QInputDevice 类

QInputDevice 类描述了一个产生 QInputEvent 的设备。 更多...

头文件 #include <QInputDevice>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
Qt 6.0
继承自 QObject
由以下类继承

QPointingDevice

公共类型

标志能力
枚举类Capability { None, Position, Area, Pressure, Velocity, …, All }
枚举类DeviceType { Unknown, Mouse, TouchScreen, TouchPad, Stylus, …, AllDevices }
标志设备类型

公共函数

QInputDevice(QObject *parent = nullptr)
QInputDevice(const QString &name, qint64 id, QInputDevice::DeviceType type, const QString &seatName = QString(), QObject *parent = nullptr)
QRectavailableVirtualGeometry() const
QInputDevice::Capabilitiescapabilities() const
boolhasCapability(QInputDevice::Capability capability) const
QStringname() const
QStringseatName() const
qint64systemId() const
QInputDevice::DeviceTypetype() const

信号

静态公共成员

QList<const QInputDevice *>设备()
const QInputDevice *primaryKeyboard(const QString &seatName = QString())
(自 6.3) QStringList座位名称()

详细描述

每个 QInputEvent 都包含一个指向 QInputDevice 的指针,以便访问特定于设备的属性,如类型、能力和座位。平台或通用插件负责通过 QWindowSystemInterface::registerInputDevice() 在生成任何引用该设备的输入事件之前查找、创建和注册每个可用输入设备对应的此类实例。

应用程序不需要实例化此类,但可以读取由 QInputEvent::device() 和 QInputDevice::devices() 所指向的实例。

成员类型文档

枚举类 QInputDevice::Capability
标志 QInputDevice::Capabilities

指示输入设备或其驱动程序可以提供哪些类型的信息。

常量描述
QInputDevice::Capability::None0没有可用输入设备功能信息。
QInputDevice::Capability::Position0x0001指示位置信息可用,这意味着触摸点的position函数族返回有效点。
QInputDevice::Capability::Area0x0002指示触摸区域信息可用,这意味着触摸点的QEventPoint::ellipseDiameters函数返回有效值。
QInputDevice::Capability::Pressure0x0004指示压力信息可用,这意味着QEventPoint::pressure函数返回有效值。
QInputDevice::Capability::Velocity0x0008指示速度信息可用,这意味着QEventPoint::velocity函数返回有效向量。
QInputDevice::Capability::NormalizedPosition0x0020指示归一化位置信息可用,这意味着QEventPoint::globalPosition函数返回有效值。
QInputDevice::Capability::MouseEmulation0x0040指示设备模拟鼠标事件。
QInputDevice::Capability::Scroll0x0100指示设备具有滚动功能。
QInputDevice::Capability::PixelScroll (自 Qt 6.2 开始)0x0080指示设备(通常是触摸板)以像素精度滚动。
QInputDevice::Capability::Hover0x0200指示设备具有悬停功能。
QInputDevice::Capability::Rotation0x0400指示旋转信息可用。
QInputDevice::Capability::XTilt0x0800指示X轴的倾斜信息可用。
QInputDevice::Capability::YTilt0x1000指示Y轴的倾斜信息可用。
QInputDevice::Capability::TangentialPressure0x2000指示切向压力信息可用。
QInputDevice::Capability::ZPosition0x4000指示Z轴的位置信息可用。
QInputDevice::Capability::All0x7FFFFFFF 

Capabilities类型是QFlags的typedef。它存储了能力值的逻辑或组合。

枚举类QInputDevice::DeviceType
标志QInputDevice::DeviceTypes

此枚举表示生成QPointerEvent的设备类型。

常量描述
QInputDevice::DeviceType::Unknown0x0000设备无法识别。
QInputDevice::DeviceType::Mouse0x0001鼠标。
QInputDevice::DeviceType::TouchScreen0x0002在此类设备中,触摸表面和显示是集成的。这意味着表面和显示通常具有相同的大小,这意味着触摸点的物理位置和QEventPoint报告的坐标之间存在直接关系。因此,Qt允许用户同时直接与多个QWidgets、QGraphicsItems或Qt Quick Items交互。
QInputDevice::DeviceType::TouchPad0x0004在这种类型的设备中,触摸表面与显示分离。物理触摸位置与屏幕坐标之间没有直接关系。相反,它们相对于当前鼠标位置进行计算,用户必须使用触摸板来移动这个参考点。与触摸屏不同,Qt 允许用户一次只与一个 QWidgetQGraphicsItem 进行交互。
QInputDevice::DeviceType::Stylus0x0010一种用于图形平板电脑(如 Wacom 平板电脑)或提供独立笔感测功能的触摸屏的笔样装置。
QInputDevice::DeviceType::Airbrush0x0020带有滚轮调整 切向压力 的笔。
QInputDevice::DeviceType::Puck0x0008一个类似平坦鼠标的设备,带有带有交叉线的透明圆圈。
QInputDevice::DeviceType::Keyboard0x1000键盘。
QInputDevice::DeviceType::AllDevices0x7FFFFFFF上述所有(用作默认过滤器值)。

DeviceTypes 类型是 QFlags<DeviceType> 的 typedef。它存储 DeviceType 值的 OR 组合。

成员函数文档

QInputDevice::QInputDevice(QObject *parent = nullptr)

创建一个新的无效输入设备实例,作为 parent 的子级。

QInputDevice::QInputDevice(const QString &name, qint64 id, QInputDevice::DeviceType type, const QString &seatName = QString(), QObject *parent = nullptr)

创建一个新的输入设备实例。提供的 name 通常是在可用时由制造商分配的型号名称,或者某些可识别的东西;id 是平台特定的数字,对于每个设备来说是唯一的(例如 X11 上的 xinput ID);type 用来标识设备类型。在能够同时处理来自多个用户或输入设备集的输入的窗口系统(如 Wayland 或 X11)上,seatName 用来标识将一起使用的设备集的名称。如果设备是子设备或从设备(例如,可以交替移动“核心指针”的多个鼠标之一),则应将其主设备作为 parent 提供。

平台插件创建、注册并继续拥有每个设备实例;通常即使没有特定设备的主设备,也应提供 parent 以进行内存管理。

默认情况下,能力() 为 None

QRect QInputDevice::availableVirtualGeometry() const

返回该设备可以在其中访问的虚拟桌面内的区域。

例如,一个固定的 TouchScreen 输入设备位于单个物理屏幕上,并且通常校准,使该区域与 QScreen::geometry() 相同;而 鼠标 可能可以访问虚拟桌面上的所有屏幕。Wacom图形板可以配置为映射到所有屏幕,或只映射到用户希望绘制的地方的屏幕,或映射到绘图发生的窗口。一个与触摸屏集成的 Stylus 设备可能在物理上是受限制的,仅限于该屏幕。

如果返回的矩形为 null,则表示该设备可以访问整个虚拟桌面。

注意:availableVirtualGeometry 属性的 getter 函数。

QInputDevice::Capabilities QInputDevice::capabilities() const

返回设备功能。

注意:capabilities 属性的 getter 函数。

[static] QList<const QInputDevice *> QInputDevice::devices()

返回所有已注册输入设备(键盘和指针设备)的列表。

注意:不是所有平台都能提供完全的设备列表。到目前为止,在 X11 平台上,最重要的信息在启动时和响应热插拔时可用。大多数其他平台仅能在接收到事件后提供各种类型的通用设备,而大多数平台在运行时不会通知 Qt 设备何时被插入或拔出。

注意:返回的列表不能用于添加新设备。要为自动化测试添加模拟触摸屏,请使用 QTest::createTouchDevice()。平台插件应在其发现时调用 QWindowSystemInterface::registerInputDevice() 来添加设备。

bool QInputDevice::hasCapability(QInputDevice::Capability capability) const

返回设备功能是否包含指定的 功能

QString QInputDevice::name() const

返回设备名称。

此字符串可能为空。但在具有多个输入设备的系统中很有用:它可以用来区分 QPointerEvent 的来源。

注意:name 属性的 getter 函数。

[static] const QInputDevice *QInputDevice::primaryKeyboard(const QString &seatName = QString())

返回给定 seatName 的核心或主键盘。

QString QInputDevice::seatName() const

如果有,返回与设备关联的 seat;否则为空。

旨在由同一用户共同使用的设备可以配置为具有相同的 seat 名称。目前这只在 Wayland 和 X11 平台上可行。

注意:seatName 属性的 getter 函数。

[static, since 6.3] QStringList QInputDevice::seatNames()

返回所有已注册输入设备(键盘和指针设备)的 seat 名称列表。

此函数是在 Qt 6.3 中引入的。

qint64 QInputDevice::systemId() const

返回平台特定的系统ID(例如X11平台的xinput ID)。

预期所有平台为每个设备提供一个唯一的系统ID。

注意:systemId属性的获取器函数。

QInputDevice::DeviceType QInputDevice::type() const

返回设备类型。

注意:type属性的获取器函数。

© 2024 Qt公司有限公司。本文件中的文档贡献为各自的版权所有者的版权。本文件中提供的文档按照自由软件基金会发布的第1.3版GNU自由文档许可协议的条款进行许可。Qt及其相应的标志是芬兰和/或全球其他国家的Qt公司 Ltd.的商标。所有其他商标均为其各自所有者的财产。