У меня есть класс на основе 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();
}
Данный код даже работает, но есть одна проблема: сцена не всегда реагирует на функцию setSceneRect
(проверил через дебаггер - сигнал доходит, значения в функцию передаются верные), то есть, клавиша нажимается, функция keyPressEvent
выполняется, нужный кейс выбирается, значения обновляются, но функция setSceneRect
не делает ничего. В чем может быть проблема?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу понять, в чем проблемаПри чтении русских символов через wifstream из файла в wstring все равно появляются не русские символы, а бред какой-то(где)
Развернул на localhost сервер + поставил базу postgreSQLпервая на 8080 вторая на 5432
Я создавал потоки испextends Thread, решил заменить его на Runnable