Hi Clint,<br><br>Thanks for replying. I did the modifications you suggested. But the problem still exists. I can load the data first time. But after I unload this data and try to browse and load a new dataset, I don't see anything in the QVTKwidget. What might be going wrong here?<br>
<br>Thanks,<br>Ashish<br><br><div class="gmail_quote">On Fri, Nov 20, 2009 at 12:53 PM, Clinton Stimpson <span dir="ltr"><<a href="mailto:clinton@elemtech.com">clinton@elemtech.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
A quick glance at the code shows you're not hooking up the QVTKWIdget with the<br>
vtkImageViewer2 correctly.<br>
<br>
One way to do it:<br>
vtkwidget = new QVTKWidget(centralwidget);<br>
imgview->SetupInteractor(vtkwidget->GetInteractor());<br>
imgview->SetRenderWindow(vtkwidget->GetRenderWindow());<br>
<br>
Clint<br>
<div><div></div><div class="h5"><br>
On Friday 20 November 2009 11:21:27 am Ashish Singh wrote:<br>
> any suggestions on this?<br>
><br>
> ---------- Forwarded message ----------<br>
> From: Ashish Singh <<a href="mailto:asinghmlists@gmail.com">asinghmlists@gmail.com</a>><br>
> Date: Thu, Nov 19, 2009 at 10:59 AM<br>
> Subject: QVTK issue with vtkImageViewer2<br>
> To: <a href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a><br>
><br>
><br>
> Hi,<br>
><br>
> I am trying to display each slice from a series of CT scans in a<br>
> QVTKwidget. The QVTKWidget itself is in a QMainWindow with 3 other widgets<br>
> to browse, load and unload the data. I want to be able to display the data<br>
> in QVTKwidget as soon as I hit the load button. I also want to be able to<br>
> unload the data and clear the QVTKwidget as soon as I hit the unload button<br>
> so that I can load a new dataset afterwards.<br>
><br>
> I can read and display the data fine only the first time. I can also unload<br>
> the data, but after unload when I try to load new data it doesn't show up<br>
> in my QVTKwidget. Can anyone please tell me what am I missing or doing<br>
> wrong here and how to correct it?<br>
><br>
> My development environment is:<br>
> Windows XP Pro x64<br>
> Visual Studio 2005<br>
> VTK 5.4.2<br>
> Qt 4.5.0<br>
><br>
> Thanks,<br>
> Ashish<br>
><br>
> Here's the code that I use:<br>
> ----Header file: test.h-----<br>
> #include <QObject><br>
> #include <QPushButton><br>
> #include <QLabel><br>
> #include <QHBoxLayout><br>
> #include <QVBoxLayout><br>
> #include <QMainWindow><br>
> #include <QVTKWidget.h><br>
> #include <QWidget><br>
> #include <QString><br>
> #include <QFileDialog><br>
> #include <QDir><br>
> #include <qapplication.h><br>
> #include <qobject.h><br>
> #include <QtGui><br>
><br>
> #include <vtkDICOMImageReader.h><br>
> #include <vtkImageViewer2.h><br>
> #include <vtkRenderWindow.h><br>
> #include "vtkRenderer.h"<br>
> #include "vtkCornerAnnotation.h"<br>
> #include "vtkImageData.h"<br>
><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>
> vtkImageData *blank;<br>
><br>
> QMainWindow *mymainwindow;<br>
> QWidget *centralwidget;<br>
> QLabel *mylabel;<br>
> QPushButton *mypbutton;<br>
> QPushButton *myloadbutton;<br>
> QPushButton *myunloadbutton;<br>
> QVTKWidget *vtkwidget;<br>
> QHBoxLayout *myhlayout;<br>
> QVBoxLayout *myvlayout;<br>
> test(QObject* parent = 0);<br>
> ~test();<br>
><br>
> public slots:<br>
> void OnLoad();<br>
> void OnBrowse();<br>
> void OnUnLoad();<br>
><br>
> };<br>
><br>
> -----cpp file: test.cpp-------<br>
> #include "test.h"<br>
><br>
> test::test(QObject * parent):QObject(parent)<br>
> {<br>
> reader = vtkDICOMImageReader::New();<br>
> imgview = vtkImageViewer2::New();<br>
><br>
> //create dummy data to create start up blank image<br>
> blank = vtkImageData::New();<br>
> blank->SetDimensions(10, 10, 1);<br>
> blank->AllocateScalars();<br>
> for (int i = 0; i < 10; i++)<br>
> for (int j = 0; j < 10; j++)<br>
> blank->SetScalarComponentFromDouble(i, j, 0, 0, 0);<br>
> blank->Update();<br>
> imgview->SetInput(blank);<br>
> imgview->SetInput(blank);<br>
> //create dummy data to create start up blank image<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>
> myunloadbutton = new QPushButton(centralwidget);<br>
><br>
> vtkwidget = new QVTKWidget(centralwidget);<br>
> vtkwidget->GetRenderWindow()->AddRenderer(imgview->GetRenderer());<br>
> vtkwidget->setFixedSize(512,512);<br>
><br>
> myhlayout = new QHBoxLayout();<br>
> myvlayout = new QVBoxLayout();<br>
><br>
> //setup UI<br>
> mylabel->setText("Select Dicom Dir");<br>
> mypbutton->setText("Browse");<br>
> this->connect(this->mypbutton,SIGNAL(clicked()),this,<br>
> SLOT(OnBrowse()));<br>
><br>
> myloadbutton->setText("Load");<br>
> this->connect(this->myloadbutton,SIGNAL(clicked()),this,<br>
> SLOT(OnLoad()));<br>
><br>
> myunloadbutton->setText("Unload");<br>
><br>
> this->connect(this->myunloadbutton,SIGNAL(clicked()),this,SLOT(OnUnLoad()))<br>
>;<br>
><br>
> myhlayout->addWidget(mylabel);<br>
> myhlayout->addWidget(mypbutton);<br>
> myhlayout->addWidget(myloadbutton);<br>
> myhlayout->addWidget(myunloadbutton);<br>
><br>
> myvlayout->addLayout(myhlayout);<br>
> myvlayout->addWidget(vtkwidget);<br>
><br>
> centralwidget->setLayout(myvlayout);<br>
> mymainwindow->setCentralWidget(centralwidget);<br>
> mymainwindow->show();<br>
> }<br>
><br>
> test::~test()<br>
> {<br>
> reader->Delete();<br>
> imgview->Delete();<br>
> blank->Delete();<br>
> }<br>
><br>
> void test::OnLoad()<br>
> {<br>
> reader->SetDirectoryName(dirname.c_str());<br>
> reader->Update();<br>
> imgview->SetInput(reader->GetOutput());<br>
> imgview->GetRenderer()->ResetCamera();<br>
> vtkwidget->update();<br>
> }<br>
><br>
> void test::OnUnLoad()<br>
> {<br>
> imgview->GetRenderer()->RemoveAllViewProps();<br>
> imgview->GetRenderer()->ResetCamera();<br>
> vtkwidget->update();<br>
> }<br>
><br>
> void test::OnBrowse()<br>
> {<br>
> QString indirectory =<br>
> QFileDialog::getExistingDirectory(this->centralwidget,tr("Select Input<br>
> Directory"), QDir::currentPath());<br>
> dirname = indirectory.toStdString();<br>
> }<br>
><br>
> -----main.cpp---------<br>
> #include "test.h"<br>
> void main(int argc, char *argv[])<br>
> {<br>
> QApplication app(argc, argv);<br>
> test *mywin = new test;<br>
> app.exec();<br>
><br>
> }<br>
<br>
</div></div></blockquote></div><br>