自定义QGraphicsItem, view拖动缩放没有重绘,导致item消失

如果改变了QGraphicsItem的 boundingRect() , 记得在导致bound ingRect()改变的操作前, 加上prepareGeometryChange();

### 回答1: QGraphicsView是一个用于显示和编辑2D图形项的视图类。它是Qt图形框架中的一部分,可以与QGraphicsScene和QGraphicsItem一起使用。 QGraphicsScene是一个场景类,可以包含图形项并管理它们的布局和行为。QGraphicsItem则是图形项的基类,包含了绘制和事件处理的功能。QGraphicsView可以将QGraphicsScene中的图形项显示在窗口中,并提供用户交互和导航的功能。 QGraphicsView的绘图功能主要通过重写绘制事件来实现。可以通过重新实现QGraphicsView的paintEvent函数来实现自定义绘制操作。在paintEvent函数中,可以使用QPainter类来进行2D图形绘制,包括线条、矩形、椭圆等。此外,还可以使用QGraphicsItem的各种派生类来绘制更复杂的图形项,如文本、路径、像素图等。 除了绘图,QGraphicsView还提供了一些其他功能。例如,可以通过QGraphicsView的setViewportUpdateMode函数来控制视图的更新模式,以提高绘图的性能。还可以使用setScene函数将QGraphicsScene对象设置为视图的场景,从而显示和编辑图形项。此外,还可以通过一些函数来控制视图的缩放、平移和旋转等操作,以实现图形的交互和导航。 总之,QGraphicsView是一个强大的绘图工具,可以实现各种2D图形的绘制和交互。通过结合QGraphicsScene和QGraphicsItem,可以创建出各种复杂的图形应用程序。 ### 回答2: QGraphicsViewQt 中的一个图形视图框架,可以用于绘制和显示2D图形、展示动画、提供交互功能等。它是基于“场景-视图模型”的设计思想,将场景中的图形对象显示在视图上。 通过 QGraphicsScene,我们可以创建一个场景,用于管理图形对象。QGraphicsView 则是用来显示这个场景的视图,可以在其中进行缩放、平移等操作。 通过 QGraphicItem 类及其派生类,我们可以创建各种图形对象,并设置其属性和行为。例如,可以创建矩形、椭圆、路径、文本等图形对象,并设置颜色、边框、填充等属性。 在绘制图形时,我们需要将图形对象添加到场景中,并设置图形的位置、大小等属性。然后,将场景设置给 GraphicsView,通过 GraphicsView 的 setScene() 方法来显示场景。 QGraphicsView 还提供了一些有用的功能,例如,支持鼠标和键盘事件的处理,可以通过重写相关函数来实现交互操作;它还可以方便地进行视图的缩放和平移,通过 setTransform() 方法可以进行缩放操作,通过 translate() 和 rotate() 方法可以进行平移和旋转操作。 总结来说,QGraphicsView 提供了一个方便、灵活的绘图框架,可以帮助我们在 Qt 应用程序中进行2D图形的绘制和显示。 ### 回答3: QGraphicsViewQt中用于绘图的一个重要的类。它可以让开发者方便地创建和管理图形场景,并支持对图形的平移、缩放和旋转等操作。 首先,我们需要创建一个QGraphicsView对象,并设置其场景。场景是存放图形对象的容器,我们可以在场景中添加、移除和管理图形项。 通过调用QGraphicsView的setScene()方法,将我们创建的场景设置给QGraphicsView对象。然后,我们可以在场景中添加各种图形项,如矩形、椭圆、文字等。 在绘制图形项时,我们可以通过继承QGraphicsItem类,并重写其paint()方法来自定义我们的图形项。在paint()方法中,我们可以使用QPainter来绘制各种形状和样式的图形。 除了绘制图形项,QGraphicsView还提供了各种交互功能。比如,我们可以通过实现mousePressEvent()、mouseMoveEvent()和mouseReleaseEvent()等事件来实现对图形的拖拽和放大缩小。 此外,QGraphicsView还能处理滚轮事件,通过重写wheelEvent()方法,我们可以实现对图形的缩放功能。 除了图形的平移、缩放和旋转,QGraphicsView还支持对图形项的选择、移动和删除等操作。我们可以通过调用QGraphicsView的相关方法,对选择的图形项进行操作。 总的来说,QGraphicsViewQt中一个非常强大和灵活的绘图类。它提供了丰富的绘图和交互功能,可以帮助我们实现各种精美的绘图效果,并提升用户体验。无论是绘制简单的图形还是复杂的图形,QGraphicsView都能满足我们的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值