QWaylandSeat 类

QWaylandSeat 类提供对键盘、鼠标和触摸输入的访问。 更多...

头文件 #include <QWaylandSeat>
CMakefind_package(Qt6 REQUIRED COMPONENTS WaylandCompositor)
target_link_libraries(mytarget PRIVATE Qt6::WaylandCompositor)
qmakeQT += waylandcompositor
由以下实例化 WaylandSeat
继承自 QWaylandObject

公开类型

枚举CapabilityFlag { Pointer, Keyboard, Touch, DefaultCapabilities }
标志CapabilityFlags

属性

公开函数

QWaylandSeat(QWaylandCompositor *compositor, QWaylandSeat::CapabilityFlags capabilityFlags = DefaultCapabilities)
虚拟~QWaylandSeat() override
QWaylandSeat::CapabilityFlags能力() const
QWaylandCompositor *compositor() const
QWaylandDrag *拖动() const
虚拟 voidinitialize()
boolisInitialized() const
QWaylandKeyboard *键盘() const
QWaylandSurface *键盘焦点() const
QWaylandKeymap *keymap()
QWaylandView *鼠标焦点() const
QWaylandPointer *指针() const
voidsendFullKeyEvent(QKeyEvent *event)
voidsendFullTouchEvent(QWaylandSurface *surface, QTouchEvent *event)
voidsendKeyEvent(int qtKey, bool pressed)
voidsendKeyPressEvent(uint code)
voidsendKeyReleaseEvent(uint code)
voidsendMouseMoveEvent(QWaylandView *view, const QPointF &localPos, const QPointF &outputSpacePos = QPointF())
voidsendMousePressEvent(Qt::MouseButton button)
voidsendMouseReleaseEvent(Qt::MouseButton button)
voidsendMouseWheelEvent(Qt::Orientation orientation, int delta)
voidsendTouchCancelEvent(QWaylandClient *client)
voidsendTouchFrameEvent(QWaylandClient *client)
uintsendTouchPointEvent(QWaylandSurface *surface, int id, const QPointF &point, Qt::TouchPointState state)
uintsendTouchPointMoved(QWaylandSurface *surface, int id, const QPointF &position)
uintsendTouchPointPressed(QWaylandSurface *surface, int id, const QPointF &position)
uintsendTouchPointReleased(QWaylandSurface *surface, int id, const QPointF &position)
(since 6.7) voidsendUnicodeKeyPressEvent(uint unicode)
(since 6.7) voidsendUnicodeKeyReleaseEvent(uint unicode)
boolsetKeyboardFocus(QWaylandSurface *surface)
voidsetMouseFocus(QWaylandView *view)
QWaylandTouch *touch() const

信号

voidcursorSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY)
voidkeyboardFocusChanged(QWaylandSurface *newFocus, QWaylandSurface *oldFocus)
voidmouseFocusChanged(QWaylandView *newFocus, QWaylandView *oldFocus)

静态公有成员

QWaylandSeat *fromSeatResource(struct wl_resource *resource)

详细描述

QWaylandSeat 提供了对不同类型用户输入的访问,并维护着键盘焦点和鼠标指针。它在 Wayland 协议中对应于 wl_seat 接口。

成员类型文档

enum QWaylandSeat::CapabilityFlag
flags QWaylandSeat::CapabilityFlags

此枚举类型描述了 QWaylandSeat 的功能。

常量描述
QWaylandSeat::Pointer0x01QWaylandSeat 支持指针输入。
QWaylandSeat::Keyboard0x02QWaylandSeat 支持键盘输入。
QWaylandSeat::Touch0x04QWaylandSeat 支持触摸输入。
QWaylandSeat::DefaultCapabilitiesPointer | Keyboard | TouchQWaylandSeat 具有默认功能。

CapabilityFlags 类型是 QFlags 的别名。它存储了一个 capabilityflag 值的 OR 组合。

属性文档

[只读] drag : QWaylandDrag* const

此属性保存拖放操作并发送开始和结束时的信号。该属性存储有关当用户拖动它时,鼠标光标下应放置什么图像等详细信息。

访问函数

QWaylandDrag *drag() const

[只读] keymap : QWaylandKeymap* const

此属性保存键盘映射对象。

键盘映射提供了一种将实际键扫描码转换为有意义值的方法。例如,如果您使用具有挪威布局的键盘映射,则字母 L 右侧的键将产生一个 Ø。

快捷键映射还可以用于自定义按键功能,例如指定是否应交换控制键和大小写锁定键等。

访问函数

QWaylandKeymap *keymap()

成员函数文档

QWaylandSeat::QWaylandSeat(QWaylandCompositor *compositor, QWaylandSeat::CapabilityFlags capabilityFlags = DefaultCapabilities)

为给定的 compositorcapabilityFlags 构造一个 QWaylandSeat。

[重载虚函数 noexcept] QWaylandSeat::~QWaylandSeat()

销毁 QWaylandSeat

QWaylandSeat::CapabilityFlags QWaylandSeat::capabilities() const

返回此 QWaylandSeat 的功能标志。

QWaylandCompositor *QWaylandSeat::compositor() const

返回此 QWaylandSeat 的合成器。

[信号] void QWaylandSeat::cursorSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY)

当客户端请求将特定 surface 作为鼠标光标时,会发出此信号。例如,当用户将鼠标悬停在某个特定表面上时,你想将光标更改为调整大小箭头。

hotspotXhotspotY 均以指针表面的左上角为基准的偏移量,表示点击的位置。例如,如果请求的鼠标光标表面是箭头,则参数指示箭头的尖端在该表面上的位置。

QWaylandDrag *QWaylandSeat::drag() const

返回此 QWaylandSeat 的拖放对象。

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

[静态] QWaylandSeat *QWaylandSeat::fromSeatResource(struct wl_resource *resource)

返回对应于 resourceQWaylandSeat。期望此 resource 具有wl_seat类型。

[虚函数] void QWaylandSeat::initialize()

初始化与构造函数中设置的或在setCapabilities()中设置的各个功能对应的 seat 部分。

注意:通常,在创建 seat 和合成器之后,此函数会自动调用,所以一般情况下不需要手动调用。

bool QWaylandSeat::isInitialized() const

如果 QWaylandSeat 已初始化,则返回 true;否则返回 false。

值为 true 表示客户端现在可以使用 seat。

QWaylandKeyboard *QWaylandSeat::keyboard() const

返回此输入设备的键盘。

QWaylandSurface *QWaylandSeat::keyboardFocus() const

返回当前键盘输入的焦点表面。

另请参阅 setKeyboardFocus().

[信号] void QWaylandSeat::keyboardFocusChanged(QWaylandSurface *newFocus, QWaylandSurface *oldFocus)

当调用 setKeyboardFocus() 时,会发出此信号。

newFocus 指的是接收到键盘焦点的表面;如果没有表面获得焦点,则为 nullptroldFocus 指的是失去键盘焦点的表面;如果没有表面失去焦点,则为 nullptr

QWaylandKeymap *QWaylandSeat::keymap()

返回此 QWaylandSeat 的键映射对象。

注意: 属性 keymap 的获取函数。

QWaylandView *QWaylandSeat::mouseFocus() const

返回当前有鼠标焦点的视图。

另请参阅 setMouseFocus().

[信号] void QWaylandSeat::mouseFocusChanged(QWaylandView *newFocus, QWaylandView *oldFocus)

当鼠标焦点从 oldFocus 变为 newFocus 时,会发出此信号。

QWaylandPointer *QWaylandSeat::pointer() const

返回此 QWaylandSeat 的指针设备。

void QWaylandSeat::sendFullKeyEvent(QKeyEvent *event)

event 发送到键盘设备。

注意: event 应与当前映射中的实际键盘键相对应。例如,Qt::Key_Exclam 通常不是一个独立的键:在大多数键盘上,感叹号是通过 Shift + 1 生成的。在这种情况下,要发送感叹号按键事件,请使用 QKeyEvent(QEvent::KeyPress, Qt::Key_1, Qt::ShiftModifier)

void QWaylandSeat::sendFullTouchEvent(QWaylandSurface *surface, QTouchEvent *event)

event 发送到触摸设备上指定的 surface

警告: 在发送到客户端之前,此 API 会自动将 QEventPoint::id() 映射为顺序 ID。因此,不应将其与使用显式 ID 的其他 API 结合使用,因为可能会发生冲突。

[可调用] void QWaylandSeat::sendKeyEvent(int qtKey, bool pressed)

将键 qtKey 的按键(如果 pressedtrue)或释放(如果 pressedfalse)事件发送到键盘设备。

注意: 此函数不支持需要修饰符的按键事件,例如 Qt::Key_Exclam。请使用 sendFullKeyEvent 代替。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

void QWaylandSeat::sendKeyPressEvent(uint code)

向键盘设备发送带有键代码 code 的按键事件。

void QWaylandSeat::sendKeyReleaseEvent(uint code)

向键盘设备发送带有键代码 code 的按键释放事件。

void QWaylandSeat::sendMouseMoveEvent(QWaylandView *view, const QPointF &localPos, const QPointF &outputSpacePos = QPointF())

将鼠标焦点设置到 view 并向指针设备发送带有本地位置 localPos 和输出空间位置 outputSpacePos 的鼠标移动事件。

void QWaylandSeat::sendMousePressEvent(Qt::MouseButton button)

向 QWaylandSeat 的指针设备发送 button 的鼠标按下事件。

void QWaylandSeat::sendMouseReleaseEvent(Qt::MouseButton button)

向 QWaylandSeat 的指针设备发送 button 的鼠标释放事件。

void QWaylandSeat::sendMouseWheelEvent(Qt::Orientation orientation, int delta)

向 QWaylandSeat 的指针设备发送带有指定的 orientationdelta 的鼠标滚轮事件。

[可调用] void QWaylandSeat::sendTouchCancelEvent(QWaylandClient *client)

client 的触摸设备发送取消事件。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

[可调用] void QWaylandSeat::sendTouchFrameEvent(QWaylandClient *client)

client 的触摸设备发送帧事件,以指示一系列触摸抬起、按下和移动事件的结束。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

uint QWaylandSeat::sendTouchPointEvent(QWaylandSurface *surface, int id, const QPointF &point, Qt::TouchPointState state)

向带有指定 idpointstate 的触摸设备上的 surface 发送触摸点事件。

警告:在使用 QWaylandQuickItem::touchEventsEnabledsendFullTouchEvent 进行触摸事件转发时,不应使用此 API,因为它可能导致冲突的触摸标识。

返回触摸抬起或触摸按下事件的序列号。

[可调用] uint QWaylandSeat::sendTouchPointMoved(QWaylandSurface *surface, int id, const QPointF &position)

向表面 trên surface 发送一个带有位置 position 的触摸点移动事件。

注意:当您完成发送触摸事件后,需要发送一个触摸帧事件。

警告:在使用 QWaylandQuickItem::touchEventsEnabledsendFullTouchEvent 进行触摸事件转发时,不应使用此 API,因为它可能导致冲突的触摸标识。

返回触摸移动事件的序列号。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

[可调用] uint QWaylandSeat::sendTouchPointPressed(QWaylandSurface *surface, int id, const QPointF &position)

向表面 surface 的触摸点 id 发送触摸按下事件。

注意:当您完成发送触摸事件后,需要发送一个触摸帧事件。

警告:在使用 QWaylandQuickItem::touchEventsEnabledsendFullTouchEvent 进行触摸事件转发时,不应使用此 API,因为它可能导致冲突的触摸标识。

返回触摸下按事件的序列号。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

[可调用] QWaylandSurface *QWaylandSeat::sendTouchPointReleased(QWaylandSurface *surface, int id, const QPointF &position)

向表面 surface 的触摸点 id 发送触摸释放事件。

注意:当您完成发送触摸事件后,需要发送一个触摸帧事件。

警告:在使用 QWaylandQuickItem::touchEventsEnabledsendFullTouchEvent 进行触摸事件转发时,不应使用此 API,因为它可能导致冲突的触摸标识。

返回触摸释放事件的序列号。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

[可调用,自 6.7 版起] void QWaylandSeat::sendUnicodeKeyPressEvent(uint unicode)

通过文本输入协议发送一个 UCS4 unicode 的按键事件。

注意:如果客户端不支持组合器支持的文本输入协议,此函数将无法正常工作。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

此函数自 Qt 6.7 版本开始引入。

另请参阅:sendKeyEvent.

[可调用,自 6.7 版起] void QWaylandSeat::sendUnicodeKeyReleaseEvent(uint unicode)

通过文本输入协议发送一个 UCS4 unicode 的按键释放事件。

注意:如果客户端不支持组合器支持的文本输入协议,此函数将无法正常工作。

注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE

此函数自 Qt 6.7 版本开始引入。

另请参阅:sendKeyEvent.

bool QWaylandSeat::setKeyboardFocus(QWaylandSurface *surface)

将当前键盘焦点设置為 surface。返回布尔值表示操作是否成功。

另请参阅:keyboardFocus.

void QWaylandSeat::setMouseFocus(QWaylandView *view)

将当前鼠标焦点设置为 view

另请参阅:mouseFocus.

QWaylandTouch *QWaylandSeat::touch() const

返回此 QWaylandSeat 的触摸设备。

© 2024 Qt公司有限公司。在此包含的文档贡献属于其各自所有者的版权。提供的文档根据自由软件基金会的发布,受GNU自由文档许可第1.3版的条款许可。GNU自由文档许可版本1.3。Qt及其相应标志是芬兰及其它在全球的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。