我正在尝试以编程方式发送键盘按键。此功能适用于Tab键和其他键,但不适用于空格。

Tab和Space的代码如下所示:

QKeyEvent *event = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);
QCoreApplication::postEvent(this->viewer, event);

QKeyEvent *event = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Space, Qt::NoModifier);
QCoreApplication::postEvent(this->viewer, event);


当我以编程方式按Tab键时,它会在按钮之间切换,但是当我以编程方式按空格键时,它不会按按钮(它在按下时会变灰,但屏幕不会按需改变)。当我确实按下键盘上的空格键时,该按钮就会被按下,并且屏幕也会改变。

知道为什么行为不一样吗?

最佳答案

解决方案是在发送KeyPress事件之后发送KeyRelease事件。如下所示:

QKeyEvent *event = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Space, Qt::NoModifier);
QCoreApplication::postEvent(this->viewer, event);
QKeyEvent *event = new QKeyEvent(QKeyEvent::KeyRelease, Qt::Key_Space, Qt::NoModifier);
QCoreApplication::postEvent(this->viewer, event);

09-04 17:19