QT案例 使用QGraphicsView和命令模式设计完成流程图功能软件,参考QT官方流程图案例【diagramscene】

article/2025/10/7 14:11:08

之前总结资料时候,看到一个Qt实现流程的专栏,后面就想着参考这个项目和官方的【diagramscene】项目,自己再写一个流程图软件来总结学习下,于是就想到使用QGraphicsView来完成相关功能,再使用命令模式来优化使用过程,再通过XML保存和加载记录等。
耗时大半个月,终于完成;具体内容讲解会按功能,划分为多个文章,当前为整个内容导读。

导读

    • 开发软件版本
    • 获取资源文件
    • 案例程序界面
    • Gif运行示例
      • 快捷键说明
    • 可执行程序下载
    • 订阅专栏发送源码
    • 参考案例

开发软件版本

开发软件:Qt Creator 5.13.1
使用库:XML . SVG

获取资源文件

经过多次的尝试,发现使用QGraphicsRectItem,或QGraphicsPathItem,或QGraphicsPixmapItem来实现流程图的过程,可选过程、决策、数据、等单元时过于复杂且样式难看,后来通过查看WPS的资源文件发现是直接使用的SVG文件,就可以使用 QGraphicsSvgItem类实现相关功能:
PNG参考路径:
WPS\Office\11.1.0.13703\office6\mui\default\resource\autoshape\tempRes32x32
SVG参考路径:
WPS\Office\11.1.0.13703\office6\mui\default\resource\autoshape\tempRes
在这里插入图片描述
注:案例在实现功能过程只使用了flowchart 文件夹中的要素,其实整个案例可以都使用svg文件包括连接线文本之类的,不过由于过于复杂就放弃了。

案例程序界面

界面整体使用 Fusion 样式,左侧流程控制单元使用 FlowLayout 布局能自适应宽度布局,右侧是整个流程显示区域:
在这里插入图片描述
具体功能实现主要是:
1.左侧按钮使用FlowLayout 布局,参考学习官方的FlowLayout案例;
2.实现把左侧 QToolButton 流程单元拖拽到右侧 QGraphicsView 内容中;
3.重构QGraphicsTextItem 实现文本内容显示 ,包括Html内容的显示
4.重构QGraphicsSvgItem 实现外接矩形的拖拽拉伸
5.重构QGraphicsLineItem 实现两个图元之间的连续,并跟随移动
6.实现图元拖拽时,图元对象之间的磁吸线功能
7.定义一个命令角色基类 ,定义个请求者角色对象,完成命令模式设计
8.生成多个命令对象,用于对界面删除图元,新增图元,连线图元等操作的执行与撤销动作
9.通过xml文件格式保存和读取历史流程记录
整个案例软件的功能简单,模块功能分明。充分的展示了项目开发工作中常用的一些功能很值得学习借鉴;
功能图解:
请添加图片描述

Gif运行示例

快捷键说明

画框选择拖拽
双击编辑本文
长按shift 加鼠标左键连线
选中后按delete删除
Ctrl加S 保存
Ctrl 加Z 撤销动作
Ctrl加Y 执行动作
按住鼠标中键拖拽
请添加图片描述

可执行程序下载

测试 QT 实现流程图案例的可执行程序 不是源码

订阅专栏发送源码

这个案例整体上属于总结性质,功能上对于细节方面并不仔细,代码量也不是很多,设计结构也简单,主要还是费了点心思。因为作者本人还是菜鸟一个,还需要讨生活,所以如果需要源码,请 订阅专栏 后私信作者发送源码或直接 下载链接。
源码版本:Qt Creator 5.13 | mingw64

在这里插入图片描述

参考案例

官方 diagramsceneFlowLayout 案例
Qt开发技术:QtSVG介绍、使用和Demo*
Qt (高仿Visio)流程图组件开发(一) 效果展示及基本开发框架构思*


http://chatgpt.dhexx.cn/article/uK3seyOS.shtml

相关文章

软件工程-系统流程图

在软件工程可行性研究中需要建立新系统的高层逻辑模型,这个就需要系统流程图了。 作用 系统流程图时描述物理系统的工具 物理系统 所谓物理系统,就是一个具体实现的系统。 与程序流程图的区别 在系统流程图中某些符号与程序流程图中符号形式相同&#…

软件工程 可行性研究、系统流程图、数据流图。

第二章:可行性研究 1.1研究方案的可行性 (1)技术可行性 (2)操作可行性 (3)经济可行性 1.2系统流程图 系统流程图表达的是系统各部件间的流动情况,不是对信息进行加工处理的控制…

ipadpro画流程图_流程图制作软件,这款软件让你5分钟就能搞定流程图

流程图制作软件,这款软件让你5分钟就能搞定流程图 2019-08-05 16:34:24 3点赞 16收藏 0评论 流程图是用来表示算法、工作流的一种框图图示,其广泛应用于分析、设计和记录等领域。市面上绘制流程图的工具并不多,找到一款适合自己的软件变得尤其…

系统流程图

系统流程图 在进行可行性研究时需要理解和分析现有系统,并以概括的形式表达对现有系统的认识;进入设计阶段后应该把设想的新系统的逻辑模型变成物理模型,因此就需要描绘未来的物理系统的概貌。 系统流程图是概括地描绘物理系统的传统工具&…

软件工程系统流程图

对现行系统进行初步分析是可行性研究当中重要的一步,新系统的一些信息主要来源于现行系统同时要根据实际需求完成现行系统的部分功能,并在此基础上对现行系统中存在的问题进行改善和修复,分析现行系统的主要方法就是分析系统的各个部分功能模…

流程图培训

工具 wps 目前咱们在新建里面,可以新建流程图 构成流程图的图形符号及其作用 常用的流程图介绍 flowchart 和 BPMN 两种 flowchart: 最开始的全名是”Process Flow Charts”,即处理流程图表。 BPMN: 定义了业务流程图,其基…

SD软件流程图

SD软件流程图 SD软件流程图 Host configure ClockSD bus power controlchanging bus widthTimeout setting on data lineCard initialization and identificationTransaction Control Transaction Control without DataTransaction Control with DataAbort TransactionChange …

软件工程程序流程图

程序流程图 程序流程图(Program Flow Chart)是用统一规定的标准符号描述程序运行具体步骤的图形表示。程序框图的设计是在处理流程图的基础上,通过对输入输出数据和处理过程的详细分析,将计算机的主要运行步骤和内容标识出来。程…

软件开发流程及类型图

前记 今天接触到了软件开发流程,对其想进行进一步了解,于是网上搜索了软件开发流程的各种资料和信息,网上的资料真是多如牛毛,数不胜数,让人不觉眼前一亮,茅塞顿开,现把自己的想法和感受整理如…

软件工程-基本流程图

本文为转载文,原作者链接: http://www.cnblogs.com/skywang12345/p/3520840.html 概要 软件的基本流程图是我们在学习编程时的必修课,它很简单,却很实用。 需要说明的是,UML并不包括软件的基本流程图,但…

这几个画流程图的软件值得你们收藏

在学习和工作中,我们经常需要制作一些流程图来帮助我们梳理知识点和工作流程,帮助我们理清思路,更加高效顺利地完成学习和工作任务。那你们知道画流程图软件哪个好吗?想知道朋友,快来看看以下我分享的几个工具吧&#…

软件工程——程序流程图详解

软件工程——程序流程图详解 文章目录 软件工程——程序流程图详解程序流程图程序流程图的基本控制结构程序流程图实例程序流程图的标准符号(国家标准)循环的标准符号注解符的使用多选择判断 N-S图N-S图的基本控制结构N-S图的实例N-S图的特点N-S图的扩展…

74161/74LS161 四位二进制同步计数器

逻辑符号 功能表 异步清零,同步置数 输出数范围为0000~1111 当Q0~Q3全为1时,C输出1表示进位

用74161计数器芯片 设计十二进制计数器

用74161计数器芯片 设计十二进制计数器 一.实验内容 1.利用74161计数器芯片设计一个M12的计数器 2.利用Quartus软件进行设计和仿真 3.观察仿真波形 二.实验步骤 1,新建工程 2,新建BDF文件,双击空白处搭建电路 3,新建vwf文件&am…

利用74161计数器芯片设计二十进制的计数器

利用74161计数器芯片设计M20的计数器 一.实验内容 1.利用74161计数器芯片设计一个M20的计数器 2.利用Quartus软件进行设计和仿真 3.观察仿真波形 二.实验步骤 1,新建工程 2,新建bdf文件 3,双击空白处搭建电路: 4,对…

quartus仿真32:74161构成的模7计数器

异步清零法,从0计数到6然后利用过渡态7完成清零操作同步置零法,计数到6时输出一个置位信号,将准备的数字0000输入到计数器中清零和置数的控制端输入相当于对计数数字的译码的过程清零法很遗憾的是有毛刺导致只能计数4个状态,置零法…

EDA数字钟--由(两片74161做成的六十进制计数器)问题总结

六十进制计数器 十二进制计数器 数字钟 问题波形 原因分析 实际的真值表 要求的真值表 09波形时间太短 六十进制计数器 当EN0是 并且LDN0时 遇到上升沿后74161清零 ,与EN0保持 相矛盾 2. 改进方案 为清零时,添加EN的约束 即EN1时才能进行清零操作

74161-可预置任意进制计数器(基于QuartusII实现)

1、 使用74161设计一个可预置的任意进制计数器,使用QuartusII 完成创建工程、编辑电路图、编译,编辑波形文件仿真,记录波形并说明仿真结果,最后在FPGA上进行硬件测试。 原理:如图所示。预置数为0000,当计数…

使用Quartus II9.0验证74161计数器

使用Quartus II9.0验证74161计数器 首先使用Quartus,新建一个项目New Quartus Project,创建一个BDF文件,双击BDF空白处,添加组件符号。 然后编译一次,新建一个vwf,矢量波形仿真文件,双击name下空白处&…