Qt实现类似cad简单图形的绘制

Qt相关基础知识GraphicsView绘图架构

Qt为绘制复杂的可交互图形提供了Graphics View绘图架构,是一种基于图形项(GraphicsItem)模型/视图模式,与model/view模式类似。

场景

QGraphicsScene类提供绘图场景(Scene)。场景是不可见的,是一个抽象的管理图形项的容器,可以向场景中添加图形项,获取场景中图形项等。

视图

可以为同一个场景提供多个不同的视图,用于对同一数据集提供不同的视口。初学QtGraphicsView绘图架构时,还奇怪,为同一数据及提供不同的视图,每个视图上呈现的图形是完全一样的,能有什么用呢?。本篇文章便是该技术的巧妙应用,请耐心读完全文。
这一点对于绘制不同的图形提供了方便,如果在不同的视图上实现不同的用户交互,也即不同的绘图功能,对于同一个场景,提供多个视图,需要实现不同的绘图功能时,切换不同的视图即可。

图形项

就是场景中图形元件。可以理解为场景中的数据元素。比如一个圆、多边形、矩形等。

GraphicsView绘图架构的不同视图绘制不同的图形

问题描述

如下图所示,实现单击不同的按钮,在绘图区域分别动态绘制多边形、圆形、矩形
在这里插入图片描述

解决方法(为同一个场景提供多个不同的视图)

本篇文章讲述用不同视图实现一个绘图功能,解决这一问题。
1)从QGraphicsView派生出绘制多边形的类PolygonGraphicsView
2)从QGraphicsView派生出绘制圆形的类CircleGraphicsView
3)从QGraphicsView派生出绘制矩形的类RectGraphicsView
4)实例化一个QGraphicsScene对象
5)分别用派生出3个类和QGraphicsView类实例化出4个视图类对象,4个视图对象均使用4)中QGraphicsScene对象,并装入QStackedWidget对象中
6)缺省情况下QStackedWidget对象中CurrentWidget为QGraphicsView类视图对象,不能绘制图形
7)点击不同的按钮时,setCurrentWidget为相应的视图对象,
多边形按钮对应PolygonGraphicsView 类对象,
圆形按钮对应CircleGraphicsView 类对象,
矩形按钮对应RectGraphicsView 类对象,
每次完成一次绘图过程,setCurrentWidget为QGraphicsView类视图对象,不能绘制图形
为什么要用不同视图(QGraphicsVIew子类)实现各个不同的绘图功能,解决这一问题呢?答案是显而易见的
1、不同绘图功能完全隔离(减少耦合性)
2、可读性强
3、维护性强,增加更多的功能更加容易
4、编码起来相对简单,不用太费脑
请观看程序演示

Qt绘制图形

有兴趣的朋友可下载源码运行、学习
Qt实现类似cad简单图形的绘制源码

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蔡云辉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值