gpt4 book ai didi

c++ - Qt/QML : How to activate a Shortcut from C++?

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:27 25 4
gpt4 key购买 nike

我有一个应用程序,它从串行端口接收输入并将它们解释为按键事件。关键事件在 C++ 中创建并发送到 QGuiApplication::focusWindow()qApp->sendEvent .

GUI 在 QML 中实现,并一直通过键事件处理程序处理输入。我想开始使用 Shortcut QML 类来处理我想要行为的情况,而不管哪个对象具有焦点。

我发现响应真实键盘的快捷方式不会响应 qApp->sendEvent , 他们也不回应 qApp->postEvent .

在没有 Shortcut 的情况下获得我想要可靠地发生的行为将是一个真正的痛苦 - 我有没有办法处理我的合成事件,使它们对 Shortcut 可见?

最佳答案

Qt 快捷方式对象通过 Qt 系统的部分工作,这些部分不是常规 API 的一部分,但暴露于 QPA .具体来说,QWindowSystemInterface::handleShortcutEvent,它将当前焦点窗口和封装在 QKeyEvent 中的大部分信息作为参数。

// A helper to send a QKeyEvent to shortcuts
bool handleShortcutEvent(const QKeyEvent &ev, QWindow *focusWindow) {
return QWindowSystemInterface::handleShortcutEvent(focusWindow, ev.timestamp(), ev.key(), ev.modifiers(), ev.nativeScanCode(), ev.nativeVirtualKey(), ev.nativeModifiers(), ev.text(), ev.isAutoRepeat(), ev.count());
}
// in my key event generating function
if(!handleShortcutEvent(event, focusWindow))
qApp->sendEvent(focusWindow, &event);

关于c++ - Qt/QML : How to activate a Shortcut from C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44892844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com