#include "PostGraphWidgetCylinder.h" #include "PostGraphWidgetCylinderCallBack.h" #include "FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowVTK.h" #include #include #include #include #include namespace Interface { PostGraphWidgetCylinder::PostGraphWidgetCylinder(QWidget * widget) { Comp::FITKGraph3DWindowVTK* graph3DWidget = dynamic_cast(widget); if (graph3DWidget == nullptr)return; _widget = vtkImplicitCylinderWidget::New(); _widget->CreateDefaultRepresentation(); //设置交互器 _widget->SetInteractor(graph3DWidget->getVTKRenderWindow()->GetInteractor()); //代理类获取 _representation = _widget->GetCylinderRepresentation(); _callBack = new PostGraphWidgetCylinderCallBack(); connect(_callBack, SIGNAL(sigValueChange(double*, double*, double)), this, SIGNAL(sigValueChange(double*, double*, double))); _widget->AddObserver(vtkCommand::InteractionEvent, _callBack); } PostGraphWidgetCylinder::~PostGraphWidgetCylinder() { if (_widget) { _widget->Off(); _widget->Delete(); _widget = nullptr; } if (_callBack) { delete _callBack; _callBack = nullptr; } } void PostGraphWidgetCylinder::setBounds(double * bounds) { if (_representation == nullptr)return; _representation->SetWidgetBounds(bounds); } void PostGraphWidgetCylinder::setValue(double * center, double * axis, double radius) { if (_representation == nullptr)return; _representation->SetCenter(center); _representation->SetAxis(axis); _representation->SetRadius(radius); } void PostGraphWidgetCylinder::setIsShow(bool isShow) { if (_widget == nullptr)return; if (isShow) { _widget->On(); } else { _widget->Off(); } } }