# Update a vtkCutter with a qslider - c++

**URL:** https://discourse.vtk.org/t/update-a-vtkcutter-with-a-qslider-c/3149
**Category:** Support
**Created:** [April 24, 2020, 10:01pm UTC](https://discourse.vtk.org/t/update-a-vtkcutter-with-a-qslider-c/3149 "2020-04-24T22:01:23Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![armel.demontgros](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@armel.demontgros](https://discourse.vtk.org/u/armel.demontgros)
#### Post date: [April 24, 2020, 10:01pm UTC](https://discourse.vtk.org/t/update-a-vtkcutter-with-a-qslider-c/3149/1 "2020-04-24T22:01:23Z")

</div>

Hi I am fairly new to VTK and trying to push it as much as I can. I am trying to update the cuttling plane value with a qslider.

I have a slice on a vtk in a QVTKOpenGLNativeWidget setup as

exmVTK::exmVTK(QWidget\* parent) : QMainWindow(parent), ui(new Ui::exmVTK)  
{  
ui-\>setupUi(this);

```
ui->frameSlider->setTickInterval(10);
ui->frameSlider->setSingleStep(1);
ui->frameSlider->setMinimum(0);
ui->frameSlider->setMaximum(99);
ui->frameSlider->setTracking(false);

vtkNew<vtkNamedColors> colors;

vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
ui->qvtkWidget->setRenderWindow(renderWindow);

vtkNew<vtkEventQtSlotConnect> slotConnector;
this->Connections = slotConnector;

//read all the data from the file
std::string filename = "C:\\VTK\\geo500.vtu";

vtkNew<vtkXMLUnstructuredGridReader> reader;
reader->SetFileName(filename.c_str());
reader->Update();

vtkNew<vtkRenderer> renderer;

//SLICE
double sliceNorm[3] = { 1.0, 0.0, 0.0 };
double sliceOrigin[3] = { 0, 0, 0 };

vtkNew<vtkPlane> plane;
plane->SetOrigin(sliceOrigin);
plane->SetNormal(sliceNorm);

// Create cutter
vtkNew<vtkCutter> cutter;
cutter->SetCutFunction(plane);
cutter->SetInputData(reader->GetOutput());
cutter->Update();

vtkNew<vtkPolyDataMapper> cutterMapper;
cutterMapper->SetInputConnection(cutter->GetOutputPort());
cutterMapper->SetResolveCoincidentTopologyToPolygonOffset();
cutterMapper->ScalarVisibilityOn();
cutterMapper->SetScalarModeToUsePointFieldData();
cutterMapper->ColorByArrayComponent("total(p)", 0);

// Create plane actor
vtkNew<vtkActor> cutterActor;
cutterActor->SetMapper(cutterMapper);
renderer->AddActor(cutterActor);

ui->qvtkWidget->renderWindow()->AddRenderer(renderer);

this->Connections->Connect(
	ui->qvtkWidget->renderWindow()->GetInteractor(),
	vtkCommand::LeftButtonPressEvent, this,
	SLOT(slot_clicked(vtkObject*, unsigned long, void*, void*)));

```

}

I also have a qslider updating the x value of the cutting plane.

void exmVTK::on\_frameSlider\_valueChanged(int value)  
{  
connect(ui-\>frameSlider, SIGNAL(valueChanged(int)), this, SLOT(setFrame(int)));  
qDebug() \<\< "Slider value changed: " \<\< value;  
}

void exmF1VTK::setFrame(int value)  
{  
double max = 5.0;  
double min = -1.0;  
int sliderMin = 0;  
int sliderMax = 99;  
double frameX = 0;  
frameX = ((max - min) \* (value - sliderMin) / (sliderMax - sliderMin) + min);  
ui-\>valueLabel-\>setText(“Value: " + QString::number(frameX, ‘f’, 2) + " mm”);

```
qDebug() << "set Frame: " << value;

```

}

How can I update the created plane x position when moving the slider? Any help would be greatly appreciated.

Thanks

---

<div class="post-metadata">

### Author: ![Paulo\_Carvalho](https://discourse.vtk.org/user_avatar/discourse.vtk.org/paulo_carvalho/32/370_2.png) [@Paulo\_Carvalho](https://discourse.vtk.org/u/Paulo_Carvalho)
#### Post date: [April 25, 2020, 9:13pm UTC](https://discourse.vtk.org/t/update-a-vtkcutter-with-a-qslider-c/3149/2 "2020-04-25T21:13:08Z")

</div>

Hello, friend

I’d add a call `plane->SetOrigin(sliceOrigin);` to your `setFrame()` slot, after changing the values in `sliceOrigin` to suit your need. All these followed by a `cutter->Update();`. Of course that would require promoting `plane`, `sliceOrigin` and `cutter` to member, global or static variables.

all the best,

Paulo

---

<div class="post-metadata">

### Author: ![armel.demontgros](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@armel.demontgros](https://discourse.vtk.org/u/armel.demontgros)
#### Post date: [April 26, 2020, 12:27am UTC](https://discourse.vtk.org/t/update-a-vtkcutter-with-a-qslider-c/3149/4 "2020-04-26T00:27:56Z")

</div>

Thanks Paulo for the very quick reply. I had thought about global variables but somehow Visual Studio complained when compiling. Member variables worked a treat though.
