我希望能够随时检查是否按下了该键。我想象这样的解决方案:
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!";});