gpt4 book ai didi

c++ - KeyPressEvent 不起作用

转载 作者:行者123 更新时间:2023-11-30 03:59:54 24 4
gpt4 key购买 nike

我对 KeyPressEvent 有疑问, 我需要移动一个 QGraphicsItem播放器在我的场景中,但程序没有使用函数KeyPressEventgame

文件“game.h”:

#ifndef GAME_H
#define GAME_H
#include <QLayout>
#include <QTimer>
#include <QGraphicsView>
#include <QAction>
#include <QString>
#include <QLabel>
#include <QKeyEvent>
#include <QGraphicsItem>
#include <strutturaAlieni.h>
#include <naveGiocatore.h>
#include <laser.h>
#include <QWidget>

namespace Ui {
class game;
}

class game : public QWidget
{
Q_OBJECT

public:
explicit game(QWidget *parent = 0);
~game();

virtual void keyPressEvent(QKeyEvent *);
}

和cpp源

void game::keyPressEvent(QKeyEvent *e){
switch(e->key())
{

case Qt::Key_Left :{
this->player->moveBy(-5,0);
break;
}
case Qt::Key_Right :{
this->player->moveBy(5,0);
break;
}
}
this->player->update();
}

在 mainwindow.cpp 中,我单击执行此代码的播放按钮:

void MainWindow::on_Play_clicked()
{
game *Gioco=new game;
Gioco->show();
Gioco->move(300,0);
}

为什么 keyPressEvent 没有开始?

最佳答案

小部件需要有一个 focus接收关键事件。另见 QApplication::focusWidget()

如果你使用 QGraphicsView 那么 scene负责 QGraphicsView 内部的焦点处理。另见 QGraphicsItem::setFocus

关于c++ - KeyPressEvent 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com