# SetSlice function in vtkResliceImageViewer is not properly working.

**URL:** https://discourse.vtk.org/t/setslice-function-in-vtkresliceimageviewer-is-not-properly-working/14559
**Category:** Development
**Tags:** vtkinformation, code
**Created:** [September 11, 2024, 11:56am UTC](https://discourse.vtk.org/t/setslice-function-in-vtkresliceimageviewer-is-not-properly-working/14559 "2024-09-11T11:56:23Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![dhanushkannan](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/d/eb9ed0/32.png) [@dhanushkannan](https://discourse.vtk.org/u/dhanushkannan)
#### Post date: [September 11, 2024, 11:56am UTC](https://discourse.vtk.org/t/setslice-function-in-vtkresliceimageviewer-is-not-properly-working/14559/1 "2024-09-11T11:56:23Z")

</div>

I am developing a Qt application using C++ to display the three dicom views and perform interaction between them.  
I have displayed DICOM using vtkSmartPointer

> resliceImageViewer-\>SetSlice(100);

should set the dicom slice value to 100. Actually it does in backend, but in UI there is no change. The default slice is set at mid-value and is not changing in UI.

The following is my script

> ```
> resliceImageViewer[1] = vtkSmartPointer<vtkResliceImageViewer>::New();
> resliceImageViewer[1]->GetRenderer()->AddViewProp ( cornerAnnotationCorL);
> ui->renderDockWidgetCoronal->SetRenderWindow(resliceImageViewer[1]->GetRenderWindow());
> resliceImageViewer[1]->SetupInteractor(ui->renderDockWidgetCoronal->GetRenderWindow()->GetInteractor());
> 
> vtkResliceCursorLineRepresentation *rep = vtkResliceCursorLineRepresentation::SafeDownCast(
> resliceImageViewer[1]->GetResliceCursorWidget()->GetRepresentation());
> resliceImageViewer[1]->SetResliceCursor(resliceImageViewer[0]->GetResliceCursor());
> 
> rep->GetResliceCursorActor()->
> GetCursorAlgorithm()->SetReslicePlaneNormal(1);
> resliceImageViewer[1]->SetInputData(reader->GetOutput());
> resliceImageViewer[1]->SetSliceOrientation(1);
> resliceImageViewer[1]->SetResliceModeToAxisAligned();
> resliceImageViewer[1]->SetResliceMode(1);
> resliceImageViewer[1]->GetRenderer()->ResetCamera();
> resliceImageViewer[1]->Render();
> 
> ```
> 
> corCam = vtkCamera::New();  
> corCam-\>SetPosition(0, 0, 1);  
> corCam-\>SetViewUp(0, -1, 0);  
> corCam = resliceImageViewer[1]-\>GetRenderer()-\>GetActiveCamera();  
> corCam-\>Roll(180);  
> resliceImageViewer[1]-\>SetSliceOrientationToXZ();  
> resliceImageViewer[1]-\>GetRenderer()-\>ResetCamera();  
> resliceImageViewer[1]-\>Render();
> 
> ```
> resliceImageViewer[1]->SetSlice(100); // this is not reflecting in UI
> resliceImageViewer[1]->GetRenderer()->ResetCamera();
> resliceImageViewer[1]->Render();
> 
> ```

I couldn’t find any possible solution to this issue.  
Help me out, guys.

---

<div class="post-metadata">

### Author: ![jaswantp](https://discourse.vtk.org/user_avatar/discourse.vtk.org/jaswantp/32/10046_2.png) [@jaswantp](https://discourse.vtk.org/u/jaswantp)
#### Post date: [September 11, 2024, 12:10pm UTC](https://discourse.vtk.org/t/setslice-function-in-vtkresliceimageviewer-is-not-properly-working/14559/2 "2024-09-11T12:10:23Z")

</div>

> I am developing a Qt application using C++ to display the three dicom views and perform interaction between them.

Are you sure you have setup the VTK render window correctly with Qt? Normally one would use `QVTKOpenGLNativeWidget`. I think you need to assign that to `vtkResliceImageViewer`’s render window.

---

<div class="post-metadata">

### Author: ![dhanushkannan](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/d/eb9ed0/32.png) [@dhanushkannan](https://discourse.vtk.org/u/dhanushkannan)
#### Post date: [September 11, 2024, 12:21pm UTC](https://discourse.vtk.org/t/setslice-function-in-vtkresliceimageviewer-is-not-properly-working/14559/3 "2024-09-11T12:21:17Z")

</div>

Yes, I have used QVTKWidget to render DICOM in UI.

If I use vtkSmartPointer instead of vtkresliceimageviewer, there is no issue.  
But I need vtkResliceImageViewer, only then I can interact between all three views using vtkResliceCursorCallback.

---

<div class="post-metadata">

### Author: ![jaswantp](https://discourse.vtk.org/user_avatar/discourse.vtk.org/jaswantp/32/10046_2.png) [@jaswantp](https://discourse.vtk.org/u/jaswantp)
#### Post date: [September 11, 2024, 12:25pm UTC](https://discourse.vtk.org/t/setslice-function-in-vtkresliceimageviewer-is-not-properly-working/14559/4 "2024-09-11T12:25:15Z")

</div>

> If I use vtkSmartPointer instead of vtkresliceimageviewer, there is no issue.

You mean `vtkSmartPointer<vtkResliceImageViewer>` instead of `vtkResliceImageViewer*`? If that works, then use the smart pointer because it keeps the reslice image viewer instance alive. In the code you shared, it looks like you’re already using a smart pointer.

---

<div class="post-metadata">

### Author: ![dhanushkannan](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/d/eb9ed0/32.png) [@dhanushkannan](https://discourse.vtk.org/u/dhanushkannan)
#### Post date: [September 11, 2024, 12:37pm UTC](https://discourse.vtk.org/t/setslice-function-in-vtkresliceimageviewer-is-not-properly-working/14559/5 "2024-09-11T12:37:59Z")

</div>

yes, i am using `vtkSmartPointer<vtkResliceImageViewer>` instead of `vtkSmartPointer<vtkImageViewer2>`
