美文网首页源码与文档分享
基于VC++和QT实现的图的可视化工具

基于VC++和QT实现的图的可视化工具

作者: UlricaLee | 来源:发表于2019-08-07 11:19 被阅读0次

    一、开发环境

    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,交互和动画毫无卡顿感。

    点击下载源码

    相关文章

      网友评论

        本文标题:基于VC++和QT实现的图的可视化工具

        本文链接:https://www.haomeiwen.com/subject/aexodctx.html