当前位置: 首页 > news >正文

cricheditview实现语法高亮和行号_[源码和文档分享]基于VC++和QT实现的图的可视化工具...

一、开发环境

  • OS
    • Windows 7 Ultimate 64 Bit
  • IDE
    • Visual Studio 2012 Premium (MSVC++ 11.0)
    • Qt5 Visual Studio Add-in 1.2.3
  • External Libraries
    • Qt 5.3 32-bit for Desktop (MSVC 2012 OpenGL) [GPL]
    • OGDF v. 2015.05 [GPL]

Bin目录下是可执行文件。附有所需的MSVC 11.0运行库的安装包,以及Qt所需的一系列dll文件。已用虚拟机测试,在新安装的纯净Win10系统中能够正常运行。

由于采用标准C++语法、采用的图形框架Qt是跨平台的、采用的外部库OGDF是C++的且是开源的,本软件理论上可跨平台编译运行。

程序执行时默认从工作目录下的PaperConferenceAuthorGraph、TopicGraph子目录内读取输入数据。

二、要求完成情况

以下是已完成的项目,依大作业要求和评分标准列出。

  • 基本要求
    • 使用QT实现2个数据集的不同数据类型、不同Layout方法的绘图,能够在不同方法数据间切换
    • 能够展示节点和边的所有属性
    • 能够对视图进行放大、缩小(可使用鼠标滚轮)
  • 进阶要求
    • 可以用鼠标拖动节点
    • 不同Layout之间用动画进行变换
    • 鼠标在移到可以点击的部分时变成手的形状
    • 可以针对点的属性(连通度)进行过滤
    • 可以利用拉索选择一部分点进行高亮,并且拖动这一些点(鼠标右键进入多选模式)
  • 其他交互
    • 自定义视图的几何样式:半径、线宽、字号、配色主题
    • 为悬停和选中的节点提供视觉提示
    • 点击节点后高亮由其相邻节点构成的子图
    • 鼠标拖拽可进行视图平移
    • 鼠标滚轮可以当前指针位置为中心进行视图缩放
  • 自己写的Layout算法
    • Circular(简单匀布在圆周上。这是一个平凡的算法,库里本来就有)
    • Circular x2(选取一部分点放在中间的小圆圈内)
    • Grid(简单平铺在平面格点上。这是一个平凡的算法,库里本来就有)
    • LZYLayout(所有点分布成LZY字样。这是一个娱乐性的算法)

水平实在有限,自己写的布局算法都比较水。感觉亮点在于细腻流畅的前端交互。除使用右侧面板中的按钮、滑动条、下拉列表框之外,主要的交互都可以由各种鼠标动作(左键、右键、滚轮,悬停、点击、拖拽)完成。工程总代码量不大(1.6k行,不计generated files),因为用了些面向对象的技巧精简节约代码量。数据结构和逻辑上做了精心的优化。据我自己测试,程序占用内存的峰值不超过12MB,交互和动画毫无卡顿感。

ae2dccf509d6bac52a59dc55d287ef15.png

c3561d859e29666e21fafd95363c76c0.png

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1436.html

相关文章:

  • table 内 下拉列表 被遮挡_Emacs Hack - 通过列表数据创建表格
  • 取出url中的字符_python爬虫,解决大众点评字符库反爬机制的经验
  • 单调有界定理适用于函数吗_实数系的连续性定理
  • java map获取第一个值_深入理解 Java 函数式编程(4): 使用 Vavr 进行函数式编程...
  • 层次聚类算法_聚类分析算法
  • centos如何复制粘贴_教你Vim编辑器,如何删除一行或者多行内容
  • java更改模块状态_2020年4月Github上最热门的Java开源项目
  • 佳能g3800故障灯说明书_啄木鸟家庭维修|天花机故障灯闪什么问题
  • 曲面积分的投影法_第二型曲面积分的投影法与对称性
  • python常用包及主要功能_python常用包及功能介绍
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • amd关闭超线程_直接提高40帧?超线程开启/关闭游戏对比测试
  • easyui 控制某列显示不显示_称重显示控制器工作原理
  • python编写脚本教程_Python编写生成验证码的脚本的教程
  • python中图例legend标签内容_关于python 的legend图例,参数使用说明
  • axios 和 cookie 的那些事
  • Computed property XXX was assigned to but it has no setter
  • ES10 特性的完整指南
  • go append函数以及写入
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java Agent 学习笔记
  • Java多态
  • js对象的深浅拷贝
  • miaov-React 最佳入门
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Unix命令
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Vultr 教程目录
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 移动端解决方案学习记录
  • 用Canvas画一棵二叉树
  • 由插件封装引出的一丢丢思考
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • # 计算机视觉入门
  • #NOIP 2014# day.1 T2 联合权值
  • (C语言)字符分类函数
  • (层次遍历)104. 二叉树的最大深度
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ******之网络***——物理***
  • .equals()到底是什么意思?
  • .net core 6 redis操作类
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Core中Emit的使用
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET多线程执行函数
  • /etc/sudoer文件配置简析
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @test注解_Spring 自定义注解你了解过吗?
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [100天算法】-目标和(day 79)
  • [BUUCTF]-Reverse:reverse3解析