我在QGraphicView中有一个QGraphicsScene。 我希望它能够接收我的键盘事件,即使我没有按下屏幕。 因为如果我点击屏幕上任意一个键,我需要做另一个动作,但现在我需要先点击,所以我需要捕捉事件,即使我不关注QGraphicsScene。 我试图将事件放在MainWindow上,但它不起作用。
我得到了这样的事件:
void AreaScene::keyPressEvent(QKeyEvent *event){
if(event->key()==Qt::Key_Control){
MapData::controlPress=true;
}
}
void AreaScene::keyReleaseEvent(QKeyEvent *event){
if(event->key()==Qt::Key_Control){
MapData::controlPress=false;
this->renderArea=false;
}
}
答案 0 :(得分:1)
在QGraphicView子类的构造函数中:
`installEventFilter(this)`
在课堂上实现这个功能:
bool eventFilter(QObject*, QEvent* e);
在这个函数中你应该编写像
这样的代码switch(e->type())
{
...
case QEvent::NonClientAreaMouseButtonPress:
{
...
}
case QEvent::NonClientAreaMouseButtonRelease:
{
...
}
}
答案 1 :(得分:0)
解决。
我在MainWindow上实现了它 注意:如果实现了事件方法,窗口不会调用此方法。