怎样在3Dslicer中创建LoadableModule
一、初始化
1.创建LoadableModule的文件目录
利用slicer中的 extension wizard模块来产生基于模板的文件和目录。
2.编译创建(build)
3.装载(install)
4.检查模块情况(check)
5.用启动器打开QtDesigner
6.在QtDesigner中修改界面文件.ui
7.根据应用需要编辑相应的文件.cpp/.h
二、在QtDesigner中设置widget的图标
1.Qt中的资源管理系统
在Qt工程的工程文件中可以包含Qt资源管理文件.qrc 。例如在Qt的界面中可能会用到的图片,其调用方式就有两种,一是放在可执行程序外部,采用绝对或相对路径的方式调用,这种方式当图片位置发生变化,那么程序将无法正常显示图片;另外一种就是使用Qt的资源系统来存储图片,这样他们就可以嵌入到可执行程序中去了。最好(图像资源等资源文件都包含在一个文件夹中,如./Icons)。相应的在在工程文件*.pro中须添加行:
RESOURCES +=\myImage.qrc
对于Qt资源管理文件.qrc,在工程的目录下须建立一个资源管理文件夹如./Icons,在该文件夹中放入资源文件如image.png等(Qt的资源系统要求资源文件必须放在qrc文件的同级或子级目录下)。其实资源可以是任意类型的,不只是图片文件,不过资源只能是只读的,不能对其进行更改。编译时会对加入的资源自动压缩。
.qrc文件实际上是一个XML格式的文件,在其中须添加如下内容(典型的*.qrc文件):
<!DOCTYPE RCC><RCC version="1.0">
<qresource><file>Icons/image.png</file>
</qresource>
</RCC>
在项目的cpp文件中引用资源时:
QIcon(":/Icons/image.png") //调用Icons文件夹中的image.png。
2.怎样为Qt部件添加图标
需要在部件的图标属性入口处(部件的属性管理器)选择资源文件:
- Slicer4/Modules/Loadable/MY_MODULE_NAME/Resources/qSlicerMY_MODULE_NAMEModule.qrc
- Slicer4/Libs/MRML/Widgets/Resources/qMRMLWidget.qrc
- Slicer4/Base/QTGUI/Resources/qSlicerBaseQTGUI.qrc
3.为资源系统添加资源文件
首先在/Icons目录下(Slicer4/Modules/Loadable/MY_MODULE_NAME/Resources/Icon)加入资源文件如pic.png。然后需要在
资源管理文件.qrc中加入如下代码:
<file>Icons/MyIcon.png</file>
三、3Dslicer中模块之间的相互依存关系
在有些情况下你自己开发的loadablemodule需要用到其他模块的信息,如一个模块的logic或者是一些定制的MRML类,这种情况下不需要重复编写模块功能,可采用如下方式,下面的代码给出要设计一个模块依存于Volume模块的logic应该怎样做:
1.修改CMakeLists.txt
set(MODULE_INCLUDE_DIRECTORIES${CMAKE_CURRENT_SOURCE_DIR}/Widgets${CMAKE_CURRENT_BINARY_DIR}/Widgets${vtkSlicerVolumesModuleLogic_SOURCE_DIR} #添加${vtkSlicerVolumesModuleLogic_BINARY_DIR} #添加)... set(MODULE_TARGET_LIBRARIES...vtkSlicerVolumesModuleLogic #添加)
2.在qSlicerMY_MODULE_NAMEModule.cxx中修改
//-----------------------------------------------------------------------------QStringList qSlicerMY_MODULE_NAMEModule::dependencies()const{return QStringList() << "Volumes";}//-----------------------------------------------------------------------------void qSlicerMY_MODULE_NAMEModule::setup(){this->Superclass::setup();vtkSlicerMY_MODULE_NAMELogic* moduleLogic =vtkSlicerMY_MODULE_NAMELogic::SafeDownCast(this->logic());qSlicerAbstractCoreModule* volumesModule =qSlicerCoreApplication::application()->moduleManager()->module("Volumes");if (volumesModule){vtkSlicerVolumesLogic* volumesLogic = vtkSlicerVolumesLogic::SafeDownCast(volumesModule->logic());moduleLogic->SetVolumesLogic(volumesLogic);}
在指定了模块的依存关系后,确保了被依存模块会在该模块之前进行setup()。
在CMakeLists.txt中采用类似的操作添加对一个模块部件(widget)的依存:
set(MODULE_INCLUDE_DIRECTORIES... ${qSlicerVolumesModuleWidgets_SOURCE_DIR}${qSlicerVolumesModuleWidgets_BINARY_DIR}...)...set(MODULE_TARGET_LIBRARIES...qSlicerVolumesModuleWidgets)
如果想要获取一个custom MRML或者displayable manager 类,采用相同的工作模式:
- custom MRML (vtkSlicerDEPENDENT_MODULEModuleMRML_SOURCE_DIR)
- displayable manager (vtkSlicerDEPENDENT_MODULEModuleDisplayableManager_SOURCE_DIR)
四、典型应用
Crop Volume module 依存于 Volumes module
怎样在3Dslicer中创建LoadableModule相关推荐
- 3DSlicer中使用简单脚本处理数据
打开slicer中的自带Python交互器.可以通过,菜单栏"View"中的"Python Interactor"打开,也可以直接点击工具栏中的Python图标 ...
- 如何在sqlite3连接中创建并调用自定义函数
#!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sql ...
- ROS话题通信中创建自定义数据类型的两种方式
一.在同一个功能包下创建.msg文件 1.在功能包目录下创建msg文件夹 2.在文件夹中创建.msg文件 3.在该功能包的package.xml文件中加入: <build_depend>m ...
- asp.net mysql 创建变_[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...
[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型 0 2018-06-30 07:00:08 官方教程: ...
- razor html帮助器,在 ASP.NET 网页(Razor)网站中创建和使用帮助器 | Microsoft Docs
在 ASP.NET 网页(Razor)网站中创建和使用 Helper 02/17/2014 本文内容 本文介绍如何在 ASP.NET 网页(Razor)网站中创建帮助程序. 帮助器是一种可重用的组件, ...
- 在Substance Designer中创建砖墙视频教程
学习在Substance Designer中创建复杂材料的高级技术. 如果你想进入游戏行业,想学习如何创建高质量的纹理和学习物质设计,那么这个课程是给你的. 我设计了这个课程,从一开始就带你,教你我用 ...
- 学习在Unity中创建一个动作RPG游戏
游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...
- 学习用C#在Unity中创建一个2D Metroidvania游戏
学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...
- 在Blender中创建惊人的低多边形动画
大小解压后:13.5G 持续时间10小时+ 包括项目文件 1920X1080 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 标题:CGBoost学院–立方体世界在Blender中创建惊人 ...
最新文章
- AI规模化落地,英特尔至强的七重助力
- Linux网络包接收过程的监控与调优
- Visual Studio 文件没发布出来
- windows聚焦图片为什么不更新了_为什么年轻明星都不愿意接周星驰的戏? 林更新道出了事情的真相|周星驰|林更新|喜剧之王|演员...
- wx.checkjsapi是写在config里面吗_用Python写一个程序,解密游戏内抽奖的秘密
- java 俄文,俄文字体在word里面是什么
- 推荐北大饶毅教授的《生物学概念与途径》课程(慕课视频+讲义)
- window常用命令(持续更新)
- concurrenthashmap_ConcurrentHashMap原理浅析
- 三坐标测量圆直径_多台三坐标测量机联动测量方法的研究
- 2.数据结构 --- 线性表
- linux系统 32位 64位 jdk下载 jdk6 jdk7
- 【Java基础系列教程】第六章 Java面向对象详解(一)_类和类的成员
- 求正整数2和n之间的完全数
- html控制台 打印 consol,浏览器console.log()打印输出台不显示输出内容……
- 解决Failed to introspect Class KafkaMetricsAutoConfiguration
- Elasticsearch7.×集群搭建,生命周期策略ilm_policy、索引模板template管理(二)
- JAVA远程连接ssh异步,SSH-2实现java连接远程服务器并执行脚本命令
- html表单提交和input标签了解
- 分布式架构实现概述(大型网站技术架构-读后感)
热门文章
- 首次为安装计算机做准备后蓝屏重启,新装电脑蓝屏死机自动重启,问题在哪里?...
- ubuntu 16.04 百度云客户端安装和修复bug
- 【项目】P2P下载帮
- 帝国理工学院计算机相关,帝国理工学院计算机
- PHP数组转字符串与PHP字符串转数组的相关方法解析
- 前端zrender框架使其可拖拽
- 集美大学计算机工程学院领导班子,数据库-集美大学计算机工程学院.PPT
- 电子计算机房用电负荷标准,8.1 供配电_数据中心设计规范 GB50174-2017_消防规范网_119消防考试网...
- 服务器安装Windows Server 2008 R2系统过程中遇到的一些坑
- 客户关系管理系统PRD编写