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


原创粉丝点击