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
原文地址:https://www.cnblogs.com/ybqjymy/p/14235583.html