Qt键事件的行为与键盘不相似

时间:2013-11-29 09:55:31

标签: c++ qt

我正在尝试以编程方式发送键盘按下。这适用于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键时,它会在按钮之间切换,但是当我以编程方式按空格键时,它不会按下按钮(按下它时会变灰,但屏幕不会按原样改变)。当我按下键盘上的空格时按下按钮,屏幕也会改变。

知道行为不一样的原因吗?

1 个答案:

答案 0 :(得分:0)

这里的解决方案是在发送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);
相关问题