gpt4 book ai didi

c++ - QT Embedded : How to generate an event to ESC (Escape), F1 等按键

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:30 26 4
gpt4 key购买 nike

我正在 QT 中开发一个嵌入式软件,它使用 LIRC 来处理 RC(远程控制)按键。

我设法映射了所有的 RC 键,所以 directFB 得到了这样的按键:

00000000000011b7 00 MENU
00000000000011a7 00 EXIT
0000000000001193 00 RED

我创建了一个 QT 类,它使用套接字获取 LIRC 键并通过 QApplication::postEvent 为所有其他 QT 小部件等生成 KeyPressEvent。它适用于“常规”键,但不适用于模拟 ESC、F1、F2 和其他“特殊”键的键。

我可以使用信号和槽让它工作(检查下面),但是,这很苛刻,因为我需要一直连接和断开事件 Windows(小部件)的信号。我不相信没有更好的解决方案。

有人知道如何为那些特殊键生成事件吗?

以下是 LIRC 套接字处理程序方法的代码片段:

QKeyEvent *event = NULL;
int emitKey = 0;

if (strstr(code, "MENU"))
{
cout << "MENU";
event = new QKeyEvent(QEvent::KeyPress, Qt::Key_Menu, Qt::NoModifier, "Menu", 0);
emitKey = Qt::Key_Menu;
}
else if (strstr(code, "EXIT"))
{
cout << "EXIT";
event = new QKeyEvent(QEvent::KeyPress, Qt::Key_Escape, Qt::NoModifier, "Exit", 0);
emitKey = Qt::Key_Escape;
}
else if (strstr(code, "RED"))
{
cout << "RED";
event = new QKeyEvent(QEvent::KeyPress, Qt::Key_F1, Qt::NoModifier, "Red", 0);
emitKey = Qt::Key_F1;
}

// All other keys, including ...

if (event)
{
cout << ": POSTED!" << endl;
event->ignore();
QApplication::postEvent(this, event);
emit k_output(emitKey);
}

菜单键事件正在到达事件窗口的 keyEvent 方法。其他人(EXIT,RED)不是...

非常感谢您的帮助。

最佳答案

在 postEvent 中使用当前聚焦的小部件解决了这个问题。我在 LIRC 配置中遇到了一些问题,这些问题生成了一些“不正确”的键码。如果有人需要这方面的帮助,我会很乐意提供帮助。谢谢

关于c++ - QT Embedded : How to generate an event to ESC (Escape), F1 等按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3533494/

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