QWaylandSeat 类
QWaylandSeat 类提供对键盘、鼠标和触摸输入的访问。 更多...
头文件 | #include <QWaylandSeat> |
CMake | find_package(Qt6 REQUIRED COMPONENTS WaylandCompositor) target_link_libraries(mytarget PRIVATE Qt6::WaylandCompositor) |
qmake | QT += 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 |
虚拟 void | initialize() |
bool | isInitialized() const |
QWaylandKeyboard * | 键盘() const |
QWaylandSurface * | 键盘焦点() const |
QWaylandKeymap * | keymap() |
QWaylandView * | 鼠标焦点() const |
QWaylandPointer * | 指针() const |
void | sendFullKeyEvent(QKeyEvent *event) |
void | sendFullTouchEvent(QWaylandSurface *surface, QTouchEvent *event) |
void | sendKeyEvent(int qtKey, bool pressed) |
void | sendKeyPressEvent(uint code) |
void | sendKeyReleaseEvent(uint code) |
void | sendMouseMoveEvent(QWaylandView *view, const QPointF &localPos, const QPointF &outputSpacePos = QPointF()) |
void | sendMousePressEvent(Qt::MouseButton button) |
void | sendMouseReleaseEvent(Qt::MouseButton button) |
void | sendMouseWheelEvent(Qt::Orientation orientation, int delta) |
void | sendTouchCancelEvent(QWaylandClient *client) |
void | sendTouchFrameEvent(QWaylandClient *client) |
uint | sendTouchPointEvent(QWaylandSurface *surface, int id, const QPointF &point, Qt::TouchPointState state) |
uint | sendTouchPointMoved(QWaylandSurface *surface, int id, const QPointF &position) |
uint | sendTouchPointPressed(QWaylandSurface *surface, int id, const QPointF &position) |
uint | sendTouchPointReleased(QWaylandSurface *surface, int id, const QPointF &position) |
(since 6.7) void | sendUnicodeKeyPressEvent(uint unicode) |
(since 6.7) void | sendUnicodeKeyReleaseEvent(uint unicode) |
bool | setKeyboardFocus(QWaylandSurface *surface) |
void | setMouseFocus(QWaylandView *view) |
QWaylandTouch * | touch() const |
信号
void | cursorSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY) |
void | keyboardFocusChanged(QWaylandSurface *newFocus, QWaylandSurface *oldFocus) |
void | mouseFocusChanged(QWaylandView *newFocus, QWaylandView *oldFocus) |
静态公有成员
QWaylandSeat * | fromSeatResource(struct wl_resource *resource) |
成员类型文档
enum QWaylandSeat::CapabilityFlag
flags QWaylandSeat::CapabilityFlags
此枚举类型描述了 QWaylandSeat 的功能。
常量 | 值 | 描述 |
---|---|---|
QWaylandSeat::Pointer | 0x01 | QWaylandSeat 支持指针输入。 |
QWaylandSeat::Keyboard | 0x02 | QWaylandSeat 支持键盘输入。 |
QWaylandSeat::Touch | 0x04 | QWaylandSeat 支持触摸输入。 |
QWaylandSeat::DefaultCapabilities | Pointer | Keyboard | Touch | QWaylandSeat 具有默认功能。 |
CapabilityFlags 类型是 QFlags
属性文档
[只读]
drag : QWaylandDrag* const
此属性保存拖放操作并发送开始和结束时的信号。该属性存储有关当用户拖动它时,鼠标光标下应放置什么图像等详细信息。
访问函数
QWaylandDrag * | drag() const |
[只读]
keymap : QWaylandKeymap* const
此属性保存键盘映射对象。
键盘映射提供了一种将实际键扫描码转换为有意义值的方法。例如,如果您使用具有挪威布局的键盘映射,则字母 L 右侧的键将产生一个 Ø。
快捷键映射还可以用于自定义按键功能,例如指定是否应交换控制键和大小写锁定键等。
访问函数
QWaylandKeymap * | keymap() |
成员函数文档
QWaylandSeat::QWaylandSeat(QWaylandCompositor *compositor, QWaylandSeat::CapabilityFlags capabilityFlags = DefaultCapabilities)
为给定的 compositor 和 capabilityFlags 构造一个 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 作为鼠标光标时,会发出此信号。例如,当用户将鼠标悬停在某个特定表面上时,你想将光标更改为调整大小箭头。
hotspotX 和 hotspotY 均以指针表面的左上角为基准的偏移量,表示点击的位置。例如,如果请求的鼠标光标表面是箭头,则参数指示箭头的尖端在该表面上的位置。
QWaylandDrag *QWaylandSeat::drag() const
返回此 QWaylandSeat 的拖放对象。
注意:属性drag的获取器函数。
[静态]
QWaylandSeat *QWaylandSeat::fromSeatResource(struct wl_resource *resource)
返回对应于 resource 的 QWaylandSeat。期望此 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 指的是接收到键盘焦点的表面;如果没有表面获得焦点,则为 nullptr
。 oldFocus 指的是失去键盘焦点的表面;如果没有表面失去焦点,则为 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 的按键(如果 pressed 为 true
)或释放(如果 pressed 为 false
)事件发送到键盘设备。
注意: 此函数不支持需要修饰符的按键事件,例如 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 的指针设备发送带有指定的 orientation 和 delta 的鼠标滚轮事件。
[可调用]
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)
向带有指定 id、point 和 state 的触摸设备上的 surface 发送触摸点事件。
警告:在使用 QWaylandQuickItem::touchEventsEnabled 或 sendFullTouchEvent 进行触摸事件转发时,不应使用此 API,因为它可能导致冲突的触摸标识。
返回触摸抬起或触摸按下事件的序列号。
[可调用]
uint QWaylandSeat::sendTouchPointMoved(QWaylandSurface *surface, int id, const QPointF &position)
向表面 trên surface 发送一个带有位置 position 的触摸点移动事件。
注意:当您完成发送触摸事件后,需要发送一个触摸帧事件。
警告:在使用 QWaylandQuickItem::touchEventsEnabled 或 sendFullTouchEvent 进行触摸事件转发时,不应使用此 API,因为它可能导致冲突的触摸标识。
返回触摸移动事件的序列号。
注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用]
uint QWaylandSeat::sendTouchPointPressed(QWaylandSurface *surface, int id, const QPointF &position)
向表面 surface 的触摸点 id 发送触摸按下事件。
注意:当您完成发送触摸事件后,需要发送一个触摸帧事件。
警告:在使用 QWaylandQuickItem::touchEventsEnabled 或 sendFullTouchEvent 进行触摸事件转发时,不应使用此 API,因为它可能导致冲突的触摸标识。
返回触摸下按事件的序列号。
注意: 此函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用]
QWaylandSurface *QWaylandSeat::sendTouchPointReleased(QWaylandSurface *surface, int id, const QPointF &position)
向表面 surface 的触摸点 id 发送触摸释放事件。
注意:当您完成发送触摸事件后,需要发送一个触摸帧事件。
警告:在使用 QWaylandQuickItem::touchEventsEnabled 或 sendFullTouchEvent 进行触摸事件转发时,不应使用此 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公司有限公司的商标。所有其他商标均为其各自所有者的财产。