C++ 移动QGraphicsView的可见区域

C++ 移动QGraphicsView的可见区域,c++,qt,C++,Qt,我有一个基于QGraphicsView的类。我想点击WASD将可见场景移动到适当的方向。任务简单明了,编写了以下代码: GameScene::GameScene(QGraphicsScene *scene, QWidget *parent) : QGraphicsView(scene, parent) { _scene = scene; _resolution = new QPointF(1920, 1080); _position = new QPointF(100,

我有一个基于
QGraphicsView
的类。我想点击WASD将可见场景移动到适当的方向。任务简单明了,编写了以下代码:

GameScene::GameScene(QGraphicsScene *scene, QWidget *parent) : QGraphicsView(scene, parent) {
    _scene = scene;

    _resolution = new QPointF(1920, 1080);
    _position = new QPointF(100, 100);
    setSceneRect(_position->x(), _position->y(), _resolution->x(), _resolution->y());

    installEventFilter(this);

    scene->addItem(new QGraphicsLineItem(510, 510, 990, 990)); }

void GameScene::keyPressEvent(QKeyEvent *event) {
    switch (event->key()) {
    case Qt::Key_W:
        _position->setY(_position->y() - 100);
        break;

    case Qt::Key_S:
        _position->setY(_position->y() + 100);
        break;

    case Qt::Key_A:
        _position->setX(_position->x() - 100);
        break;

    case Qt::Key_D:
        _position->setX(_position->x() + 100);
        break;

    default:
        break;
    }

    setSceneRect(_position->x(), _position->y(), _resolution->x(), _resolution->y());
    update(); 
}

该代码甚至可以工作,但有一个问题:场景并不总是响应
设置设置竖立
功能(通过解除触发信号检查,值被发送到功能正确),即按下键,执行
按键事件
功能,选择所需的情况,这些值会被更新,但
setscen竖设
功能不起任何作用。可能是什么问题?

为什么
installEventFilter(此)?@TFM,但在
按键事件中
仅更改位置。决心并不重要changing@argbt1啊,是的,对不起,我误读了…@eyllanesc没有这条线,信号根本达不到。这是正确的方式吗?@argbt1您指的是什么信号?keyPressEvent是一个事件,当一个对象想要侦听另一个对象的事件时,您应该只使用installEventFilter,在这种情况下,不需要使用installEventFilter,因为该对象可以侦听自己的事件。另外,在使用installEventFilter时,必须覆盖eventFilter方法,请阅读以下文档: