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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于Qt实现绘制流程图软件具有以下特点和优势。 首先,Qt是一种跨平台的开发框架,可以实现在不同操作系统上运行的流程图软件。无论是Windows、Mac还是Linux系统,用户都可以使用同样的功能和界面来绘制流程图,方便使用和操作。 其次,基于Qt绘制流程图软件具有良好的界面设计和交互体验。Qt提供了丰富的图形界面组件,开发者可以灵活地设计和布局软件界面,使得用户能够直观、方便地绘制流程图。同时,Qt还支持用户交互功能实现,如拖拽、缩放、旋转等,使得用户操作更加灵活多样。 第三,基于Qt绘制流程图软件的绘图功能强大且灵活。Qt提供了很多图形绘制API,可以绘制直线、曲线、矩形、椭圆等各种基本图形,同时还支持各种绘图效果的实现,如阴影、渐变、文本样式等。这使得用户可以根据需求设计出美观、具有创意的流程图,提升了软件的可用性和用户体验。 最后,基于Qt绘制流程图软件还可以实现文件的保存和导入功能Qt提供了丰富的文件操作类和相关函数,可以将用户绘制的流程图保存为特定的文件格式,方便用户进行存储和分享。同时,也可以支持导入其他常用的流程图文件格式,如Visio、Excel等,提高软件的兼容性和使用灵活性。 综上所述,基于Qt实现绘制流程图软件具有跨平台性、良好的界面设计和交互体验、强大的绘图功能以及文件的保存和导入功能等优势,为用户提供了高效、便捷的绘图工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蔡云辉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值