QGrahicsView中视图定位-状态重绘-碰撞监测-层次关系

本文介绍了在使用QGraphicsView开发过程中遇到的问题及其解决方案,包括如何精确地定位视图,实现状态重绘以优化选中效果,利用QT提供的接口进行碰撞检测,以及通过调整Z值管理图元的层次关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接

在相比于其它控件QGraphicsView算是个人使用的比较少的控件了,最近在开发一个项目,针对QGraphicsView做了很多开发,这里总结一下开发中遇到的一些问题以及解决方案。

1.视图定位
QGraphicsView其实只是一个展示器,类似于电脑设备的显示窗口,而QGraphicsScene是显示器中当前的场景,类似于显示器上的一幅画,而QGraphicsItem是这幅画上面的一些物件。通过这个层次关系我们就知道如何布局物件,更新View中的视图了。在开发过程中,有时候场景Scene会比视口View大很多,所以我们只能看到场景的一部分,这点就类似于地图的显示。那么如何动态调整QGraphicsView中显示的场景范围呢?

一开始我走了弯路,尝试通过控制滚动条的范围,来进行控制视口显示的范围,后来发现不行,无法定位显示,后发现QGraphicsView提供了视口调整的函数,直接调整视口的显示范围即可。

void ChangeTheShowScope(QRect scopeRect)
{
    ui.graphicsView->setSceneRect(scopeRect);
    ui.graphicsView->viewport()->update();
    ui.graphicsView->viewport()->repaint();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值