Hi,<br><br>I am trying to display each slice from a series of CT scans in a
QVTKwidget. The QVTKWidget itself is in a QMainWindow with 2 other
widgets to browse and load the data and a slider to view each slice. I want to be able to display the
data in QVTKwidget as soon as I hit the load button and use a slider to display every slice from the series. I am facing two problems with my application. <br><br>(1) when I run the application I get a bunch of errors that open in a new vtkOutputWindow. How do I eliminate these? The errors that I get are as follows:<br>
-----<br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional.<br>
<br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional.<br>
<br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional.<br>
<br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional.<br>
<br>ERROR: In ..\..\vtk-5.2.1\Rendering\vtkImageActor.cxx, line 267<br>vtkOpenGLImageActor (0487A430): This filter requires unsigned char scalars as input<br><br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>
vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional.<br><br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>
vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional.<br><br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>
vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional.<br><br>ERROR: In ..\..\vtk-5.2.1\Filtering\vtkDemandDrivenPipeline.cxx, line 725<br>
vtkStreamingDemandDrivenPipeline (0487BC08): Input port 0 of algorithm vtkImageMapToWindowLevelColors(0487AA68) has 0 connections but is not optional<br>ERROR: In ..\..\vtk-5.2.1\Rendering\vtkImageActor.cxx, line 267<br>vtkOpenGLImageActor (0487A430): This filter requires unsigned char scalars as input<br>
<br>---------<br><br>(2)My application windows also opens up and I can load the data fine. But when I use the slider, it opens up a new Win32OpenGLWindow and displays each slice in this window instead of my QVTKWidget window. <br>
<br>Can anyone please guide me on solving these 2 errors? I will really appreciate all assistance with this. <br><br>Thanks,<br>Ashish<br><br>Here&#39;s my code:<br>------header file----<br>#include &lt;QObject&gt;<br>#include &lt;QPushButton&gt;<br>

#include &lt;QLabel&gt;<br>#include &lt;QHBoxLayout&gt;<br>#include &lt;QVBoxLayout&gt;<br>#include &lt;QMainWindow&gt;<br>#include &lt;QVTKWidget.h&gt;<br>#include &lt;QWidget&gt;<br>#include &lt;QString&gt;<br>#include &lt;QFileDialog&gt;<br>

#include &lt;QDir&gt;<br>#include &lt;qapplication.h&gt;<br>#include &lt;qobject.h&gt;<br>#include &lt;QtGui&gt;<br>#include &lt;QSlider&gt;<br><br>#include &lt;vtkDICOMImageReader.h&gt;<br>#include &lt;vtkImageViewer2.h&gt;<br>
#include &lt;vtkRenderWindow.h&gt;<br>
#include &quot;vtkRenderer.h&quot;<br><br>using namespace std;<br><br>class test : public QObject<br>{<br>    Q_OBJECT<br><br>public:<br>    string dirname;<br>    vtkDICOMImageReader *reader;<br>    vtkImageViewer2 *imgview;<br>

<br>    QMainWindow *mymainwindow;<br>    QWidget *centralwidget;<br>    QLabel *mylabel;<br>    QPushButton *mypbutton;<br>    QPushButton *myloadbutton;<br>    QSlider *slider1;<br>    QVTKWidget *vtkwidget;<br>    QHBoxLayout *myhlayout;<br>
    QVBoxLayout *myvlayout;<br>
    test(QObject* parent = 0);<br>    ~test();<br><br><br>    public slots:<br>        void OnLoad();<br>        void OnBrowse();<br>        void OnSlide(int);<br><br>};<br>------cpp file------<br>#include &quot;test.h&quot;<br>
test::test(QObject * parent):QObject(parent)<br>
{<br>    reader = vtkDICOMImageReader::New();<br>    imgview = vtkImageViewer2::New();<br><br>    mymainwindow = new QMainWindow();<br>    centralwidget = new QWidget(mymainwindow);<br><br>    mylabel = new QLabel(centralwidget);<br>

    mypbutton = new QPushButton(centralwidget);<br>    myloadbutton = new QPushButton(centralwidget);<br>    slider1 = new QSlider(Qt::Horizontal,centralwidget);<br><br>    vtkwidget = new QVTKWidget(centralwidget);<br>    vtkwidget-&gt;GetRenderWindow()-&gt;AddRenderer(imgview-&gt;GetRenderer());<br>
<div id=":13o" class="ii gt">
    vtkwidget-&gt;setFixedSize(512,512);<br><br>    myhlayout = new QHBoxLayout();<br>    myvlayout = new QVBoxLayout();<br><br>    //setup UI<br>    mylabel-&gt;setText(&quot;Select Dicom Dir&quot;);<br>    mypbutton-&gt;setText(&quot;Browse&quot;);<br>

    this-&gt;connect(this-&gt;mypbutton,SIGNAL(clicked()),this, SLOT(OnBrowse()));<br><br>    myloadbutton-&gt;setText(&quot;Load&quot;);<br>    this-&gt;connect(this-&gt;mypbutton,SIGNAL(clicked()),this, SLOT(OnLoad()));<br>
<br>   this-&gt;connect(this-&gt;slider1,SIGNAL(valueChanged(int)),this,SLOT(OnSlide(int)));<br>
<br>    myhlayout-&gt;addWidget(mylabel);<br>    myhlayout-&gt;addWidget(mypbutton);<br>    myhlayout-&gt;addWidget(myloadbutton);<br><br>    myvlayout-&gt;addLayout(myhlayout);<br>    myvlayout-&gt;addWidget(vtkwidget);<br>
    myvlayout-&gt;addWidget(slider1);<br>
<br>    centralwidget-&gt;setLayout(myvlayout);<br>    mymainwindow-&gt;setCentralWidget(centralwidget);<br>    mymainwindow-&gt;show();<br>}<br><br>test::~test()<br>{<br>    reader-&gt;Delete();<br>    imgview-&gt;Delete();<br>

}<br><br>void test::OnLoad()<br>{<br>    reader-&gt;SetDirectoryName(dirname.c_str());<br>    reader-&gt;Update();<br><br>    imgview-&gt;SetInput(reader-&gt;GetOutput());<br>    imgview-&gt;GetRenderer()-&gt;ResetCamera();<br>
    vtkwidget-&gt;update();<br>
<br>}<br><br>void test::OnSlide(int value)<br>{<br>    this-&gt;slider1-&gt;setRange(this-&gt;imgview-&gt;GetSliceMin(),this-&gt;imgview-&gt;GetSliceMax());<br>    imgview-&gt;SetSlice(value);<br><br>}<br><br>void test::OnBrowse()<br>
{<br>    QString indirectory = QFileDialog::getExistingDirectory(this-&gt;centralwidget,tr(&quot;Select Input Directory&quot;), QDir::currentPath());<br>    dirname = indirectory.toStdString();<br>
<br>}<br>------main.cpp---------<br>#include &quot;test.h&quot;<br>void main(int argc, char *argv[])<br>{<br>    QApplication app(argc, argv);<br>    test *mywin = new test;<br>    app.exec();<br><br>}</div><br>