我希望能够随时检查是否按下了该键。我想象这样的解决方案:

void MyQQuickPaintedItem::keyPressEvent(QKeyEvent * event)
{

  isKeyPressed[ event->key() ] = 1;

}

void MyQQuickPaintedItem::keyReleaseEvent(QKeyEvent *event)
{

  isKeyPressed[ event->key() ] = 0;

}

要检查是否按下了右箭头键,就足以检查isKeyPressed[ Qt::Key_Right ]值。

我实现了它,但是...不起作用。我并不是说程序崩溃了。即使我按下此向右箭头键或任何其他键,isKeyPressed[ Qt::Key_Right ]始终始终为0。

编辑:

头文件之一:
...
bool isKeyPressed[255];
...

链接文件之一:
...
extern bool isKeyPressed[255];
...

我不知道isKeyPressed应该多大,但是我不知道SIGSEGV,所以大小可能还可以。

最佳答案

您通常不会解决这样的问题...至少不使用QT ...

如果您有兴趣“捕捉”某些按键事件,则Qt提供了实现此目的的方法

您可以做的是将“快捷方式”“连接”到lambda或插槽,然后在其中执行所需的操作……例如在用户按下“Control + I”时捕获

connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_I), this), &QShortcut::activated, [](){qDebug() << "Here we are!";});

07-24 21:12