3D Slicer Loadable Module

1.简述

可加载模块是针对Slicer设计的C++ Plugin(插件)。他们为特定的功能定义GUI,因为他们对应用程序具有完全控制权。
  • C++共享库
  • 全权控制UI(基于Qt)和Slicer的内部构件(如MRML、logic、显示管理)
  • 为繁重的计算进行优化

2.何如设计Loadable Module?

PPT参考资料:
https://na-mic.org/wiki/File:LoadableModules.pptx

2.1 Slicer模块的结构

  • Slicer/Modules/Core
  • Slicer/Modules/CLI
  • Slicer/Modules/Loadable:Colors、CropVolume、Data、Models、Tractograph、Transform、Volume、VolumeRendering
  • Slicer/Modules/Scripted

2.2 创建 Loadable Module

  • Module Plugin整体结构
    
  • 模块逻辑Module Logic和模块窗口部件Module Widget
   

2.3 Life of a module

1).启动Slicer
2).Slicer发现我们创建的模块MyModule
  • 解决依赖项
  • 在Menu中添加模块标题
  • 创建模块逻辑Module Logic:选择性的注册新的节点Nodes
  • 模块设置:选择性地注册IO、显示管理DisplayableManager
3).Slicer加载文件(Add Data)
  • 注册的IO可以读取数据
  • 显示IO选项(用AddData对话框)
  • 通过IO加载文件
4).创建模块窗口小部件

2.4 代码分析

这里分析一下PPT中给的代码逻辑示意图:
原理图(SIGNAL-SLOT、Event-SLOT)
 
 
实际运行流程图(SINGAL-SLOT→Synchronize→Event-SLOT)
更详细的资料,请参考如下:
How to creat a Loadable Module?
https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/CreateLoadableModule
原文地址:https://www.cnblogs.com/ybqjymy/p/14235387.html