QInputDevice 类
QInputDevice 类描述了一个产生 QInputEvent 的设备。 更多...
头文件 | #include <QInputDevice> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
自 | Qt 6.0 |
继承自 | QObject |
由以下类继承 |
公共类型
标志 | 能力 |
枚举类 | 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) | |
QRect | availableVirtualGeometry() const |
QInputDevice::Capabilities | capabilities() const |
bool | hasCapability(QInputDevice::Capability capability) const |
QString | name() const |
QString | seatName() const |
qint64 | systemId() const |
QInputDevice::DeviceType | type() const |
信号
void | availableVirtualGeometryChanged(QRect area) |
静态公共成员
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::None | 0 | 没有可用输入设备功能信息。 |
QInputDevice::Capability::Position | 0x0001 | 指示位置信息可用,这意味着触摸点的position函数族返回有效点。 |
QInputDevice::Capability::Area | 0x0002 | 指示触摸区域信息可用,这意味着触摸点的QEventPoint::ellipseDiameters函数返回有效值。 |
QInputDevice::Capability::Pressure | 0x0004 | 指示压力信息可用,这意味着QEventPoint::pressure函数返回有效值。 |
QInputDevice::Capability::Velocity | 0x0008 | 指示速度信息可用,这意味着QEventPoint::velocity函数返回有效向量。 |
QInputDevice::Capability::NormalizedPosition | 0x0020 | 指示归一化位置信息可用,这意味着QEventPoint::globalPosition函数返回有效值。 |
QInputDevice::Capability::MouseEmulation | 0x0040 | 指示设备模拟鼠标事件。 |
QInputDevice::Capability::Scroll | 0x0100 | 指示设备具有滚动功能。 |
QInputDevice::Capability::PixelScroll (自 Qt 6.2 开始) | 0x0080 | 指示设备(通常是触摸板)以像素精度滚动。 |
QInputDevice::Capability::Hover | 0x0200 | 指示设备具有悬停功能。 |
QInputDevice::Capability::Rotation | 0x0400 | 指示旋转信息可用。 |
QInputDevice::Capability::XTilt | 0x0800 | 指示X轴的倾斜信息可用。 |
QInputDevice::Capability::YTilt | 0x1000 | 指示Y轴的倾斜信息可用。 |
QInputDevice::Capability::TangentialPressure | 0x2000 | 指示切向压力信息可用。 |
QInputDevice::Capability::ZPosition | 0x4000 | 指示Z轴的位置信息可用。 |
QInputDevice::Capability::All | 0x7FFFFFFF |
Capabilities类型是QFlags
枚举类QInputDevice::DeviceType
标志QInputDevice::DeviceTypes
此枚举表示生成QPointerEvent的设备类型。
常量 | 值 | 描述 |
---|---|---|
QInputDevice::DeviceType::Unknown | 0x0000 | 设备无法识别。 |
QInputDevice::DeviceType::Mouse | 0x0001 | 鼠标。 |
QInputDevice::DeviceType::TouchScreen | 0x0002 | 在此类设备中,触摸表面和显示是集成的。这意味着表面和显示通常具有相同的大小,这意味着触摸点的物理位置和QEventPoint报告的坐标之间存在直接关系。因此,Qt允许用户同时直接与多个QWidgets、QGraphicsItems或Qt Quick Items交互。 |
QInputDevice::DeviceType::TouchPad | 0x0004 | 在这种类型的设备中,触摸表面与显示分离。物理触摸位置与屏幕坐标之间没有直接关系。相反,它们相对于当前鼠标位置进行计算,用户必须使用触摸板来移动这个参考点。与触摸屏不同,Qt 允许用户一次只与一个 QWidget 或 QGraphicsItem 进行交互。 |
QInputDevice::DeviceType::Stylus | 0x0010 | 一种用于图形平板电脑(如 Wacom 平板电脑)或提供独立笔感测功能的触摸屏的笔样装置。 |
QInputDevice::DeviceType::Airbrush | 0x0020 | 带有滚轮调整 切向压力 的笔。 |
QInputDevice::DeviceType::Puck | 0x0008 | 一个类似平坦鼠标的设备,带有带有交叉线的透明圆圈。 |
QInputDevice::DeviceType::Keyboard | 0x1000 | 键盘。 |
QInputDevice::DeviceType::AllDevices | 0x7FFFFFFF | 上述所有(用作默认过滤器值)。 |
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.的商标。所有其他商标均为其各自所有者的财产。