c++ - 移动 QGraphicsView 的可见区域
问题描述
我有一个基于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
函数(通过 debagger 信号到达检查,值正确发送到函数),即按下键,keyPressEvent
执行函数,选择所需的情况,更新值,但该setSceneRect
函数不执行任何操作。可能是什么问题呢?
解决方案
推荐阅读
- excel - Excel VBA - 将 ActiveX TreeView 控件添加到带有代码的工作表
- reactjs - 更新 DateTimePicker 选择上的文本
- python - 为什么 statsmodels 的 ARIMA(1,0,0) 不等于 AutoReg(1)?
- python - 条形图颜色键不正确
- php - 不能根据价格和数量添加总价
- python - Python – 调试和可视化正则表达式
- python - bs4的非常奇怪的行为
- python - 错误:为 azure ML ACI 部署创建 docker 映像时无法卸载“ruamel-yaml”
- r - r 生成带有随机 1 和 0 且有限制的列
- python - Amazon Ubuntu Server (EC2) 上的 Selenium 未打开某些链接,但在本地计算机上运行良好