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 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