QMainWindow::keyReleaseEvent 未按预期工作
Posted
技术标签:
【中文标题】QMainWindow::keyReleaseEvent 未按预期工作【英文标题】:QMainWindow::keyReleaseEvent is not working as expected 【发布时间】:2013-11-27 08:31:54 【问题描述】:这是我的代码:
.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
不会被调用。我错过了什么吗?
【问题讨论】:
你试过调试器确定你没有进入这个方法吗?(在函数的第一行设置断点) 您的表单中有 MainMenu 吗?它会影响行为。 @VahidNateghi 我试过了,它从来没有进入方法。 @MM。我不确定你的意思是什么? @MahmoudHassan:如果你在表单中放了一个MainMenu,那么ALT
键的行为就会改变,不能被捕获。
【参考方案1】:
我认为你应该先启用鼠标事件,在你的构造函数中添加setMouseTracking(true);
,像这样:
MyMainWindow::MyMainWindow(QWidget *parent) : QMainWindow(parent)
setMouseTracking(true);
【讨论】:
鼠标跟踪与此有何关系?无论如何,我尝试添加它,但没有任何改变。 对不起,我弄错了。以上是关于QMainWindow::keyReleaseEvent 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章