• 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
  • 相关阅读:
    SSL/TLS
    openssl数字证书常见格式 协议
    Jetty 与 Tomcat 的比较
    Spring Boot 邮件配置
    SSL与TLS的区别以及介绍
    pring Boot 与Spring Cloud版本对应
    iOS initWithFrame、initWithCoder、awakeFromNib的区别解析
    浅析iOS tableview的selectRowAtIndexPath选中无效(默认选中cell无效)
    iOS 多线程NSThread理解与场景示例
    iOS7 UIWebview加载进度条实现
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14235387.html
Copyright © 2020-2023  润新知