3DSlicer32:CreateModels-Module Analysis
来源:互联网 发布:linux如何清除dns缓存 编辑:程序博客网 时间:2024/06/02 02:59
1.qSlicerCreateModelsModule.h
#ifndef __qSlicerllshCreateNewModelsModule_h#define __qSlicerllshCreateNewModelsModule_h// SlicerQt includes#include "qSlicerLoadableModule.h"#include "qSlicerllshCreateNewModelsModuleExport.h"class qSlicerllshCreateNewModelsModulePrivate;//文件之间类相互引用(前向类引用)/// \ingroup Slicer_QtModules_ExtensionTemplateclass Q_SLICER_QTMODULES_LLSHCREATENEWMODELS_EXPORT qSlicerllshCreateNewModelsModule : public qSlicerLoadableModule{ Q_OBJECT//使用Qt_Widget Q_INTERFACES(qSlicerLoadableModule);//Plug-in插件接口public: typedef qSlicerLoadableModule Superclass; explicit qSlicerllshCreateNewModelsModule(QObject *parent=0); virtual ~qSlicerllshCreateNewModelsModule(); qSlicerGetTitleMacro(QTMODULE_TITLE); virtual QString helpText()const; virtual QString acknowledgementText()const; virtual QStringList contributors()const; /// Return a custom icon for the module virtual QIcon icon()const; virtual QStringList categories()const; virtual QStringList dependencies() const;protected: /// Initialize the module. Register the volumes reader/writer virtual void setup(); /// Create and return the widget representation associated to this module virtual qSlicerAbstractModuleRepresentation * createWidgetRepresentation(); /// Create and return the logic associated to this module virtual vtkMRMLAbstractLogic* createLogic();protected: QScopedPointer<qSlicerllshCreateNewModelsModulePrivate> d_ptr;private: Q_DECLARE_PRIVATE(qSlicerllshCreateNewModelsModule); Q_DISABLE_COPY(qSlicerllshCreateNewModelsModule);};#endif
2.qSlicerCreateModelsModule.cpp
// Qt includes#include <QtPlugin>//QT插件机制// ExtensionTemplate Logic includes#include <vtkSlicerllshCreateNewModelsLogic.h>//核心逻辑控制头文件// ExtensionTemplate includes#include "qSlicerllshCreateNewModelsModule.h"//模块控制头文件#include "qSlicerllshCreateNewModelsModuleWidget.h"//模块主控模板设计头文件//-----------------------------------------------------------------------------Q_EXPORT_PLUGIN2(qSlicerllshCreateNewModelsModule, qSlicerllshCreateNewModelsModule);//-----------------------------------------------------------------------------/// \ingroup Slicer_QtModules_ExtensionTemplateclass qSlicerllshCreateNewModelsModulePrivate{public: qSlicerllshCreateNewModelsModulePrivate();};//-----------------------------------------------------------------------------// qSlicerllshCreateNewModelsModulePrivate methods//-----------------------------------------------------------------------------qSlicerllshCreateNewModelsModulePrivate::qSlicerllshCreateNewModelsModulePrivate(){}//-----------------------------------------------------------------------------// qSlicerllshCreateNewModelsModule methods//-----------------------------------------------------------------------------qSlicerllshCreateNewModelsModule::qSlicerllshCreateNewModelsModule(QObject* _parent) : Superclass(_parent) , d_ptr(new qSlicerllshCreateNewModelsModulePrivate){}//-----------------------------------------------------------------------------qSlicerllshCreateNewModelsModule::~qSlicerllshCreateNewModelsModule(){}//-----------------------------------------------------------------------------QString qSlicerllshCreateNewModelsModule::helpText()const{ return "For help on how to use this module visit: <a href='http://www.slicerigt.org '>SlicerIGT</a>";}//-----------------------------------------------------------------------------QString qSlicerllshCreateNewModelsModule::acknowledgementText()const{ return "This work was was funded by Cancer Care Ontario and the Ontario Consortium for Adaptive Interventions in Radiation Oncology (OCAIRO)";}//-----------------------------------------------------------------------------QStringList qSlicerllshCreateNewModelsModule::contributors()const{ QStringList moduleContributors; moduleContributors << QString( "Tamas Ungi (Queen's University)" ); return moduleContributors;}//-----------------------------------------------------------------------------QIcon qSlicerllshCreateNewModelsModule::icon()const{ return QIcon(":/Icons/llshCreateNewModels.png");}//-----------------------------------------------------------------------------QStringList qSlicerllshCreateNewModelsModule::categories() const{ return QStringList() << "TsinghuaMed";}//-----------------------------------------------------------------------------QStringList qSlicerllshCreateNewModelsModule::dependencies() const{ return QStringList();}//-----------------------------------------------------------------------------void qSlicerllshCreateNewModelsModule::setup(){ this->Superclass::setup();}//-----------------------------------------------------------------------------qSlicerAbstractModuleRepresentation * qSlicerllshCreateNewModelsModule::createWidgetRepresentation(){ return new qSlicerllshCreateNewModelsModuleWidget;}//-----------------------------------------------------------------------------vtkMRMLAbstractLogic* qSlicerllshCreateNewModelsModule::createLogic(){ return vtkSlicerllshCreateNewModelsLogic::New();}
3.qSlicerCreateModelsModuleWidget.h
#ifndef __qSlicerllshCreateNewModelsModuleWidget_h#define __qSlicerllshCreateNewModelsModuleWidget_h// SlicerQt includes#include "qSlicerAbstractModuleWidget.h"#include "qSlicerllshCreateNewModelsModuleExport.h"class qSlicerllshCreateNewModelsModuleWidgetPrivate;class vtkMRMLNode; //文件之间类相互引用,必须进行声明/// \ingroup Slicer_QtModules_ExtensionTemplateclass Q_SLICER_QTMODULES_LLSHCREATENEWMODELS_EXPORT qSlicerllshCreateNewModelsModuleWidget : public qSlicerAbstractModuleWidget{ Q_OBJECTpublic: typedef qSlicerAbstractModuleWidget Superclass; qSlicerllshCreateNewModelsModuleWidget(QWidget *parent=0);//隐式的构造函数 virtual ~qSlicerllshCreateNewModelsModuleWidget();public slots: void OnCreateNeedleClicked();//创建针模型按钮 void OnCreateCubeClicked(); //创建立方体模型按钮 void OnCreateCylinderClicked();//创建圆锥体模型按钮 void OnCreateSphereClicked();//创建球体按钮 void OnCreateCoordinateClicked();//创建坐标系按钮 protected: QScopedPointer<qSlicerllshCreateNewModelsModuleWidgetPrivate> d_ptr;//智能指针 virtual void setup();private: Q_DECLARE_PRIVATE(qSlicerllshCreateNewModelsModuleWidget); Q_DISABLE_COPY(qSlicerllshCreateNewModelsModuleWidget);};#endif
4.qSlicerCreateModelsModuleWidget.cpp
// Qt includes#include <QDebug>#include <QtGui>// SlicerQt includes#include "qSlicerCreateModelsModuleWidget.h"#include "ui_qSlicerCreateModelsModule.h" //我们可以利用QtCreator进行设计#include "vtkSlicerCreateModelsLogic.h" //Slicer的逻辑类用于创建简单模型//-----------------------------------------------------------------------------/// \ingroup Slicer_QtModules_ExtensionTemplateclass qSlicerCreateModelsModuleWidgetPrivate: public Ui_qSlicerCreateModelsModule{ Q_DECLARE_PUBLIC( qSlicerCreateModelsModuleWidget );protected: qSlicerCreateModelsModuleWidget* const q_ptr;public: qSlicerCreateModelsModuleWidgetPrivate( qSlicerCreateModelsModuleWidget& object ); vtkSlicerCreateModelsLogic* logic() const;};//-----------------------------------------------------------------------------// qSlicerCreateModelsModuleWidgetPrivate methodsqSlicerCreateModelsModuleWidgetPrivate::qSlicerCreateModelsModuleWidgetPrivate( qSlicerCreateModelsModuleWidget& object ) : q_ptr( &object ){}vtkSlicerCreateModelsLogic* qSlicerCreateModelsModuleWidgetPrivate::logic() const{ Q_Q( const qSlicerCreateModelsModuleWidget ); return vtkSlicerCreateModelsLogic::SafeDownCast( q->logic() );}//-----------------------------------------------------------------------------// qSlicerCreateModelsModuleWidget methods//-----------------------------------------------------------------------------qSlicerCreateModelsModuleWidget::qSlicerCreateModelsModuleWidget(QWidget* _parent): Superclass( _parent ) , d_ptr( new qSlicerCreateModelsModuleWidgetPrivate( *this ) ){}//-----------------------------------------------------------------------------qSlicerCreateModelsModuleWidget::~qSlicerCreateModelsModuleWidget(){}void qSlicerCreateModelsModuleWidget::OnCreateNeedleClicked(){ Q_D(qSlicerCreateModelsModuleWidget); d->logic()->CreateNeedle( d->NeedleLength->value(), d->NeedleRadius->value(), d->NeedleTipRadius->value(), d->markersCheckBox->isChecked() );}void qSlicerCreateModelsModuleWidget::OnCreateCubeClicked(){ Q_D(qSlicerCreateModelsModuleWidget); d->logic()->CreateCube( d->CubeRLength->value(), d->CubeALength->value(), d->CubeSLength->value() );}void qSlicerCreateModelsModuleWidget::OnCreateCylinderClicked(){ Q_D(qSlicerCreateModelsModuleWidget); d->logic()->CreateCylinder( d->CylinderHeight->value(), d->CylinderRadius->value() );}void qSlicerCreateModelsModuleWidget::OnCreateSphereClicked(){ Q_D(qSlicerCreateModelsModuleWidget); d->logic()->CreateSphere( d->SphereRadius->value() );}void qSlicerCreateModelsModuleWidget::OnCreateCoordinateClicked(){ Q_D( qSlicerCreateModelsModuleWidget ); d->logic()->CreateCoordinate( d->CAxisLengthSpinBox->value(), d->CAxisThicknessSpinBox->value() );}void qSlicerCreateModelsModuleWidget::setup()//信号槽~{ Q_D(qSlicerCreateModelsModuleWidget); d->setupUi(this); this->Superclass::setup(); connect( d->CreateNeedleButton, SIGNAL( clicked() ), this, SLOT( OnCreateNeedleClicked() ) ); connect( d->CreateCubeButton, SIGNAL( clicked() ), this, SLOT( OnCreateCubeClicked() ) ); connect( d->CreateCylinderButton, SIGNAL( clicked() ), this, SLOT( OnCreateCylinderClicked() ) ); connect( d->CreateSphereButton, SIGNAL( clicked() ), this, SLOT( OnCreateSphereClicked() ) ); connect( d->CreateCoordinateButton, SIGNAL( clicked() ), this, SLOT( OnCreateCoordinateClicked() ) );}
5.qSlicerCreateModelsModuleLogic.h
#ifndef __vtkSlicerllshCreateNewModelsLogic_h#define __vtkSlicerllshCreateNewModelsLogic_h// Slicer includes#include "vtkSlicerModuleLogic.h"//逻辑基类#include "vtkSlicerllshCreateNewModelsModuleLogicExport.h"class vtkMRMLModelNode;class vtkPolyData;/// \ingroup Slicer_QtModules_ExtensionTemplateclass VTK_SLICER_LLSHCREATENEWMODELS_MODULE_LOGIC_EXPORT vtkSlicerllshCreateNewModelsLogic : public vtkSlicerModuleLogic{public: static vtkSlicerllshCreateNewModelsLogic *New();//动态分配内存 创建对象 vtkTypeMacro(vtkSlicerllshCreateNewModelsLogic, vtkSlicerModuleLogic); void PrintSelf(ostream& os, vtkIndent indent); vtkMRMLModelNode* CreateNeedle( double length, double radius, double tipRadius, bool markers ); vtkMRMLModelNode* CreateCube( double x, double y, double z ); vtkMRMLModelNode* CreateCylinder( double height, double radius ); vtkMRMLModelNode* CreateSphere( double radius ); vtkMRMLModelNode* CreateCoordinate( double axisLength, double axisRadius ); protected: vtkSlicerllshCreateNewModelsLogic(); virtual ~vtkSlicerllshCreateNewModelsLogic();private: void CreateCylinderData( vtkPolyData* polyData, double height, double radius ); void CreateConeData( vtkPolyData* polyData, double height, double radius ); vtkSlicerllshCreateNewModelsLogic(const vtkSlicerllshCreateNewModelsLogic&); // Not implemented void operator=(const vtkSlicerllshCreateNewModelsLogic&); // Not implemented};#endif
6.qSlicerCreateModelsModuleLogic.cpp
阅读全文
0 0
- 3DSlicer32:CreateModels-Module Analysis
- android audio module a2dp analysis
- Critical analysis of SAP HR module (Part 1)
- Constructing module maps for integrated analysis of heterogeneous biological networks
- Site Analysis Note 3
- Analysis 3 Functions
- Caffe Code Analysis-3
- Android Binder Analysis(3)
- XUtils 3 Source analysis
- Complex analysis review 3
- analysis
- analysis
- analysis
- PCA:Principle Component Analysis [3]
- Python for Data Analysis (3)
- Arcgis:Spatial & 3D Analysis
- alphalens教程3--Information Analysis
- Module 3 Architecture
- 使用phpQuery轻松采集网页内容
- pyspark sql createGlobalTempView和createOrReplaceTempView
- SHELL与空格
- Android so加固的简单脱壳
- bootstrap报错 Bootstrap's JavaScript requires jQuery
- 3DSlicer32:CreateModels-Module Analysis
- Artoolkit例子中的simpletest.c改写-----将显示的模型移动
- java的map和list的操作
- Android的Socket通信Demo
- tensorflow中的session和graph
- [caffe的python接口学习三]:生成solver文件
- 怎么在jsp页面中获取数据库数据
- SGISTL源码探究-stl_alog.h中的二分查找算法
- linux信号集与信号屏蔽字