zoukankan      html  css  js  c++  java
  • 3D Slicer Module-Create Loadable

    1.Overview

    可加载模块可以看做是Logic和UI联合构成的。

    2.Creating Loadable Module

    • 创建模块目录
    建议使用ExtensionWizard采用模板的方法生成文件和文件目录。
    • Build
    可以使用CMake GUI、也可以使用命令行的方法。注意的是一定要指定Slicer_DIR为实体。
    例如:Slicer_DIR=D:Slicer4DSlicer-build
    • Installing
    之前也谈到过这一点,对于Slicer的机制,并没有“Installing”一说。我们可以理解为对插件的注册。
    在Application Setting Dialog中设置Addition Module Path的时候,路径指示到模块的库目录。
    例如:D:Slicer4DSlicer-buildModuleTestmyLoadable-buildlibSlicer-4.7qt-loadable-modulesDebug
    • Check the module
    打开Slicer.exe,就可以在Module Navigation Interface中找到我们新建立的模块。
    Slicer官网提供给了我们修改module名字的方法如4,本人不建议改来改去的麻烦。
    • 使用启动器(Launcher)打开Qt Designer
    在Slicer开发中,我们慢慢会发现启动VS、QtDesigner等开发环境和以往很不同,往往是在命令行中利用Launcher(Slicer.exe)进行启动。
    1 d:
    2 cd Slicer4D/Slicer-build
    3 Slicer.exe --designer
    使用Qt Designer,编辑模块的UI文件,例如,我的UI文件位于:
    D:Slicer4DSlicer-buildModuleTestmyLoadablemyLoadableResourcesUI
    通过上面的展图,可以发现我这里是存在两个UI文件的:
    qSlicermyLoadableFooBarWidget.ui、qSlicermyLoadableModuleWidget.ui。细节参考3.2.
    • Edit Module Files
    Slicer4/Modules/Loadable/MY_MODULE_NAME/qSlicerMY_MODULE_NAME.[h|cxx]
    Slicer4/Modules/Loadable/MY_MODULE_NAME/qSlicerMY_MODULE_NAMEWidget.[h|cxx]
    Slicer4/Modules/Loadable/MY_MODULE_NAME/Logic/vtkSlicerMY_MODULE_NAMELogic.[h|cxx]
     

    3.如何使用QtDesigner进行开发?

    3.1 加载CTK和MRML部件

    为了在Qt Designer中拥有CTK Widget和MRML Widget部件,Qt Designer提供了两个选项:
    • the first is to copy the CTK and MRML plugin libraries into %QT_DIR%/plugins/designer
    • the second is to set the environment variable QT_PLUGIN_PATH to the directory Slicer-build/bin containing the subdirectory designer with the plugin libraries.
    Windows Note:
    利用正确的环境变量运行Qt Designer:Slicer.exe --designer。
    如果Slicer处于Debug模式下,那么Qt也必须用Debug模式。

    3.2 Building & Installing

    官网给的Build方法比较麻烦,这里我尝试了一种相对比较简单的方法:
    • UI设计好之后保存;
    • 利用CMake进行编译生成*****.sln
    • 利用VisualStudio打开*****.sln,进行编译
    • 按照3方法进行注册即可
    VisualStudio编译是为了根据UI文件生成ui_qSlicer_*Name*_ModuleWidget.h,例如本例生成了ui_qSlicermyLoadableModuleWidget.h。
    该文件被qSlicermyLoadableModuleWidgetGenericTest.cxx使用。

    4.模块间的依存

    原理如5.6所示,具体还有待研究。

    5.参考资料

    1.Creating:https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/CreateLoadableModule
    2.Building:https://www.slicer.org/wiki/Documentation/Nightly/Developers/ExtensionWizard#Building
    3.Installing:https://www.slicer.org/wiki/Documentation/Nightly/Developers/ExtensionWizard#.22Installation.22
    4.Checking:https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/CreateLoadableModul
    5.QtDesigner:https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/QtDesigner
    6.ModuleDependency:https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/CreateLoadableModule
  • 相关阅读:
    ChemDraw绘制DNA结构的技巧
    几何画板中该如何插入公式
    MathType可以编辑带圈乘号吗
    几何画板是这样构造扇形内部的
    Chem 3D软件可以改变背景吗
    移动端上下滑动事件之--坑爹的touch.js
    在HTML5中如何提高网站前端性能
    git入门
    php 路由实现
    vb 定时执行php程序
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14235583.html
Copyright © 2011-2022 走看看