这是我的代码:
.h文件
class MyMainWindow : public QMainWindow
{
...
protected:
virtual void keyPressEvent(QKeyEvent *event);
virtual void keyReleaseEvent(QKeyEvent *event);
private:
bool _altKeyDown;
...
}
.cpp文件
void MyMainWindow::keyPressEvent(QKeyEvent *event) {
if(event->key() == Qt::Key_Alt) {
_altKeyDown = true;
}
}
void MyMainWindow::keyReleaseEvent(QKeyEvent *event) {
if(getenv("DEBUG_MODE")) qDebug() << "keyReleaseEvent fired";
if(event->key() == Qt::Key_Alt) {
_altKeyDown = false;
}
}
每次按一个键都会调用
keyPressEvent
函数,但是当我释放键时,不会调用keyReleaseEvent
。我想念什么吗? 最佳答案
我认为您应该首先启用鼠标事件,然后在构造函数中添加setMouseTracking(true);
,如下所示:
MyMainWindow::MyMainWindow(QWidget *parent) : QMainWindow(parent)
{
setMouseTracking(true);
}
关于c++ - QMainWindow::keyReleaseEvent无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20237313/