<div dir="ltr">Thanks David. Sorry about the example. I will attach a working example as soon as I can. About  the sample code you sent, my problem is when the code is the other way around. I mean, reading the file and the connector in the function and then rendering the viewer in the main method. It maybe a Qt widget issue, but I am not sure.<div>
<br></div><div>Thanks for your response!</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, May 20, 2013 at 10:55 AM, David Doria <span dir="ltr">&lt;<a href="mailto:daviddoria@gmail.com" target="_blank">daviddoria@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Fri, May 17, 2013 at 3:43 PM, Manuel Corrales<br>
&lt;<a href="mailto:manuelcorrales@gmail.com">manuelcorrales@gmail.com</a>&gt; wrote:<br>
&gt; Hello all. I have a simple code that reads an image using ITK, then it<br>
&gt; convert it to VTK and after that I display the image in a QVTKWidget. The<br>
&gt; code is this and works fine:<br>
&gt;<br>
&gt;      typedef itk::Image&lt; double, 2 &gt;         ImageType;<br>
&gt;       typedef itk::ImageToVTKImageFilter&lt;ImageType&gt; ConnectorType;<br>
&gt;       typedef itk::ImageFileReader&lt;ImageType&gt; ReaderType;<br>
&gt;<br>
&gt;       ReaderType::Pointer reader = ReaderType::New();<br>
&gt;       reader-&gt;SetFileName(file.c_str());<br>
&gt;       reader-&gt;Update();<br>
&gt;<br>
&gt;       ConnectorType::Pointer connector = ConnectorType::New();<br>
&gt;       connector-&gt;SetInput(reader-&gt;GetOutput());<br>
&gt;       connector-&gt;Update();<br>
&gt;       ImageReader *myReader = new ImageReader();<br>
&gt;       vtkSmartPointer&lt;vtkImageViewer2&gt; vtkImageViewer =<br>
&gt; vtkSmartPointer&lt;vtkImageViewer2&gt;::New();<br>
&gt;       vtkImageViewer-&gt;SetInput(connector-&gt;GetOutput());<br>
&gt;       vtkImageViewer-&gt;SetRenderWindow(this-&gt;qvtkWidget-&gt;GetRenderWindow());<br>
&gt;       vtkImageViewer-&gt;Render();<br>
&gt;<br>
&gt;<br>
&gt; Now if I change this code and create a separate function to perform the<br>
&gt; connection from ITK to VTK, I get a segfault:<br>
&gt;<br>
&gt; ImageReader *myReader = new ImageReader();<br>
&gt;       vtkSmartPointer&lt;vtkImageViewer2&gt; vtkImageViewer =<br>
&gt; myReader-&gt;renderITKReaderInVTK(file);<br>
&gt;       vtkImageViewer-&gt;SetRenderWindow(this-&gt;qvtkWidget-&gt;GetRenderWindow());<br>
&gt;       vtkImageViewer-&gt;Render();<br>
&gt;<br>
&gt; and the called function:<br>
&gt;<br>
&gt; vtkSmartPointer&lt;vtkImageViewer2&gt;<br>
&gt; ImageReader::renderITKReaderInVTK(std::string fileName) {<br>
&gt;     typedef itk::Image&lt; double, 2 &gt;         ImageType;<br>
&gt;     typedef itk::ImageToVTKImageFilter&lt;ImageType&gt; ConnectorType;<br>
&gt;     typedef itk::ImageFileReader&lt;ImageType&gt; ReaderType;<br>
&gt;<br>
&gt;     ReaderType::Pointer reader = ReaderType::New();<br>
&gt;     qDebug() &lt;&lt; &quot;Setting reader file name&quot;;<br>
&gt;     reader-&gt;SetFileName(fileName.c_str());<br>
&gt;     qDebug() &lt;&lt; &quot;Updating reader&quot;;<br>
&gt;     reader-&gt;Update();<br>
&gt;<br>
&gt;     ConnectorType::Pointer connector = ConnectorType::New();<br>
&gt;     qDebug() &lt;&lt; &quot;Setting input to connector&quot;;<br>
&gt;     connector-&gt;SetInput(reader-&gt;GetOutput());<br>
&gt;     qDebug() &lt;&lt; &quot;Updating connector&quot;;<br>
&gt;     connector-&gt;Update();<br>
&gt;<br>
&gt;     vtkSmartPointer&lt;vtkImageViewer2&gt; vtkImageViewer =<br>
&gt; vtkSmartPointer&lt;vtkImageViewer2&gt;::New();<br>
&gt;     qDebug() &lt;&lt; &quot;Setting connector outupt -&gt; imageViewer input&quot;;<br>
&gt;     vtkImageViewer-&gt;SetInput(connector-&gt;GetOutput());<br>
&gt;     qDebug() &lt;&lt; &quot;Image viewer set up ready&quot;;<br>
&gt;     return vtkImageViewer;<br>
&gt; }<br>
&gt;<br>
&gt; Any ideas why the same code (I think) works if it is all together but fail<br>
&gt; when it&#39;s in a different function?<br>
&gt;<br>
&gt; Thanks in advance!<br>
&gt; Regards,<br>
&gt; Manuel.<br>
<br>
<br>
</div></div>It is much easier for us if you provide a compilable example of the<br>
error. I tried the following, but it seems to work fine. If you can<br>
provide something like this that segfaults, I&#39;m sure someone can help<br>
you out.<br>
<br>
#include &lt;vtkVersion.h&gt;<br>
#include &lt;vtkSmartPointer.h&gt;<br>
#include &lt;vtkRenderWindow.h&gt;<br>
#include &lt;vtkRenderWindowInteractor.h&gt;<br>
#include &lt;vtkRenderer.h&gt;<br>
#include &lt;vtkImageViewer2.h&gt;<br>
<br>
#include &quot;itkImage.h&quot;<br>
#include &quot;itkImageFileReader.h&quot;<br>
#include &quot;itkImageToVTKImageFilter.h&quot;<br>
<br>
vtkSmartPointer&lt;vtkImageViewer2&gt; CreateImageViewer();<br>
<br>
int main(int, char *[])<br>
{<br>
<div class="im"><br>
    typedef itk::Image&lt; double, 2 &gt;         ImageType;<br>
     typedef itk::ImageToVTKImageFilter&lt;ImageType&gt; ConnectorType;<br>
     typedef itk::ImageFileReader&lt;ImageType&gt; ReaderType;<br>
<br>
     ReaderType::Pointer reader = ReaderType::New();<br>
</div>     reader-&gt;SetFileName(&quot;test.png&quot;);<br>
<div class="im">     reader-&gt;Update();<br>
<br>
     ConnectorType::Pointer connector = ConnectorType::New();<br>
     connector-&gt;SetInput(reader-&gt;GetOutput());<br>
     connector-&gt;Update();<br>
<br>
</div>     vtkSmartPointer&lt;vtkImageViewer2&gt; imageViewer = CreateImageViewer();<br>
     imageViewer-&gt;SetInputData(connector-&gt;GetOutput());<br>
     imageViewer-&gt;Render();<br>
<br>
  return EXIT_SUCCESS;<br>
}<br>
<br>
vtkSmartPointer&lt;vtkImageViewer2&gt; CreateImageViewer()<br>
{<br>
    vtkSmartPointer&lt;vtkImageViewer2&gt; imageViewer =<br>
vtkSmartPointer&lt;vtkImageViewer2&gt;::New();<br>
    return imageViewer;<br>
}<br>
</blockquote></div><br></div>