gpt4 book ai didi

c++ - 在Qt中模拟全局按键

转载 作者:行者123 更新时间:2023-12-02 10:07:01 25 4
gpt4 key购买 nike

我正在为连接到旋转编码器的树莓派构建Qt应用程序。当用户按下旋转编码器按钮时,应用程序会从该按钮注册硬件中断,并发出一个信号,应用程序可以拦截该信号。

挑战在于该应用程序具有多个可以显示的窗口,而我想简单地拥有一个将按钮按下信号转换为可以由应用程序中任何 Activity 窗口注册的全局按键的功能。确定要激活哪个窗口的直接将按键发送给它的额外逻辑。有没有一种方法可以模拟系统范围内的按键,以便使焦点对准的任何窗口都能获得它?

到目前为止,我有以下代码片段,尽管它需要引用特定的QObject才能将按键定向到:

QKeyEvent *event = new QKeyEvent(QEvent::KeyPress, Qt::Key_Enter);
QCoreApplication::postEvent (receiver, event);

其中 receiver也是用于引导按键的对象。有任何想法吗?

最佳答案

要将关键事件广播到所有顶级窗口小部件(即Windows):

    for(auto w : qApp->allWidgets())
{
if(w->isTopLevel())
{
qApp->postEvent(w, new QKeyEvent(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier));
}
}

要将事件直接发送到 Activity 窗口(最前面的窗口):
qApp->postEvent(qApp->activeWindow(), new QKeyEvent(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier));

关于c++ - 在Qt中模拟全局按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59759576/

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