[vtkusers] QVTKwidget issue

Ashish Singh mrasingh at gmail.com
Fri Mar 13 16:53:08 EDT 2009


Hi,

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. I want to be able to display the data in QVTKwidget as soon
as I hit the load button. I can read the data fine, but it doesn't display
in QVTKwidget until I click or interact with QVTKwidget using mouse. Can
anyone please tell me what am I missing here?

I am working on a Windows system and using VTK version 5.2.1 with Visual
Studio 2005 and Qt 4.5

Thanks,
Ashish

Here's my code:
------header file----
#include <QObject>
#include <QPushButton>
#include <QLabel>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMainWindow>
#include <QVTKWidget.h>
#include <QWidget>
#include <QString>
#include <QFileDialog>
#include <QDir>
#include <qapplication.h>
#include <qobject.h>
#include <QtGui>

#include <vtkDICOMImageReader.h>
#include <vtkImageViewer2.h>
#include <vtkRenderWindow.h>
#include "vtkRenderer.h"

using namespace std;

class test : public QObject
{
    Q_OBJECT

public:
    string dirname;
    vtkDICOMImageReader *reader;
    vtkImageViewer2 *imgview;

    QMainWindow *mymainwindow;
    QWidget *centralwidget;
    QLabel *mylabel;
    QPushButton *mypbutton;
    QPushButton *myloadbutton;
    QVTKWidget *vtkwidget;
    QHBoxLayout *myhlayout;
    QVBoxLayout *myvlayout;
    test(QObject* parent = 0);
    ~test();


    public slots:
        void OnLoad();
        void OnBrowse();

};
------cpp file------
#include "test.h"
test::test(QObject * parent):QObject(parent)
{
    reader = vtkDICOMImageReader::New();
    imgview = vtkImageViewer2::New();

    mymainwindow = new QMainWindow();
    centralwidget = new QWidget(mymainwindow);

    mylabel = new QLabel(centralwidget);
    mypbutton = new QPushButton(centralwidget);
    myloadbutton = new QPushButton(centralwidget);

    vtkwidget = new QVTKWidget(centralwidget);
    vtkwidget->GetRenderWindow()->AddRenderer(imgview->GetRenderer());
    vtkwidget->setFixedSize(512,512);

    myhlayout = new QHBoxLayout();
    myvlayout = new QVBoxLayout();

    //setup UI
    mylabel->setText("Select Dicom Dir");
    mypbutton->setText("Browse");
    this->connect(this->mypbutton,SIGNAL(clicked()),this, SLOT(OnBrowse()));

    myloadbutton->setText("Load");
    this->connect(this->mypbutton,SIGNAL(clicked()),this, SLOT(OnLoad()));

    myhlayout->addWidget(mylabel);
    myhlayout->addWidget(mypbutton);
    myhlayout->addWidget(myloadbutton);

    myvlayout->addLayout(myhlayout);
    myvlayout->addWidget(vtkwidget);

    centralwidget->setLayout(myvlayout);
    mymainwindow->setCentralWidget(centralwidget);
    mymainwindow->show();
}

test::~test()
{
    reader->Delete();
    imgview->Delete();
}

void test::OnLoad()
{
    reader->SetDirectoryName("D:\\testimages\\dicomset\\test");
    reader->Update();

    imgview->SetInput(reader->GetOutput());
    imgview->GetRenderer()->ResetCamera();

}

void test::OnBrowse()
{
    QString indirectory =
QFileDialog::getExistingDirectory(this->centralwidget,tr("Select Input
Directory"), QDir::currentPath());
    dirname = indirectory.toStdString();

}
------main.cpp---------
#include "test.h"
void main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    test *mywin = new test;
    app.exec();

}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090313/7a3f2564/attachment.htm>


More information about the vtkusers mailing list