网问答>>QGraphicsView架构学习总结(1)
问题
已解决

QGraphicsView架构学习总结(1)

时间:2024-09-29 21:58:08
QGraphicsView架构学习总结(1)
最佳回答
在深入学习QGraphicsView架构的过程中,我发现了与OnPainter的对比。OnPainter和QPainter在图形绘制老铅上有着一定的局限性,主要体现在只能绘制简单且固定图形,不支持图形的编辑、拖动、修改等功能。针对复杂功能需求,Qt提供了一种基于图形项目的模型/视图模式的解决方案——QGraphicsView绘图架构。这一架构主要由侍烂好场景、视图和图形项三部分组成。场景作为不可见的管理图历闭形项的容器,负责存放所有绘制的图形项。你可以向场景中添加圆形、矩形、三角形等各种基本图形,甚至自定义图形。场景还允许你获取场景中的特定图形项。视图作为显示场景内容的组件,通过它用户可以查看场景中的图形。视图与场景的关系是,场景位于视图的中心,你可以通过调整视图的Alignment属性来改变场景在视图中的显示位置。视图显示的范围小于场景,但自动提供滚动条,让用户可以在整个场景内平移查看。图形项则是一些基本图形的抽象类,例如椭圆、矩形等。它们继承自QGraphicsItem基类,并可以进一步扩展为满足特定需求的图形类,比如我将绘图类继承自QGraphicsPathItem,以实现更多功能。在实现示例中,我创建了一个名为QShapeRectangular的矩形类,继承自QGraphicsPathItem。在绘制代码中,当图形变为选中状态时,通过改变线条的绘制方式,由实线变为虚线,实现了视觉上的区别。此外,我还使用点随鼠标滑动的效果来提升展示效果,具体实现将在后续文章中详细说明。QGraphicsView架构中的三个坐标系分别对应图形项坐标、场景坐标和视图坐标。视图坐标与设备坐标相同,用于物理定位,通常以左上角为原点,单位为像素;场景坐标等同于QPainter的逻辑坐标,以场景中心为原点,同样单位为像素;而图形项坐标则是局部逻辑坐标,以图形项自身中心为原点。总体而言,通过QGraphicsView架构,不仅能够实现基本的图形绘制功能,还能支持图形的编辑、拖动、旋转、缩放等高级操作,为用户提供更丰富的交互体验。接下来的文章将详细探讨如何在QGraphicsView中进行图形项的绘制以及实现各种交互功能。
时间:2024-09-29 21:58:15
本类最有帮助
Copyright © 2008-2013 www.wangwenda.com All rights reserved.冀ICP备12000710号-1
投诉邮箱: