[vtkusers] Help updating a QVTKWidget

Garrett Larson garrett at unc.edu
Mon Nov 23 09:27:23 EST 2009


Thanks for the quick response! I've tried that and unfortunately it isn't
working for me. I think the issue has to do with the fact that I'm changing
the pixel values manually, and the widgets don't realize the image has
changed.

I thought it might have to do with the cachedImageDirty() signal, but I
don't understand when to call markCachedImageDirty() (before
qvtkWidget->update() ? after?) or how to check if the flag is being set
appropriately as the value is a protected member of QVTKWidget.

-Garrett Larson


On Mon, Nov 23, 2009 at 8:53 AM, André Prins <a.h.prins at gmail.com> wrote:

> You could try calling QVTKWidget::update(), which is Qt's method of
> repainting the widget.
> See for example: http://doc.trolltech.com/4.5/qwidget.html#update.
>
> Regards,
> André
>
> On Mon, Nov 23, 2009 at 2:04 PM, Garrett Larson <garrett at unc.edu> wrote:
> > I've created an application that contains a QVTKWidget linked to a
> > vtkImageViewer2. Alterations to the vtkImageData before initializing the
> > vtkImageViewer2 are visible as soon as I call viewer->Render(), but any
> > changes I make later do not appear until I click inside the widget. In
> fact,
> > this happens even if I run the exact same sequence of methods to make a
> new
> > vtkImageViewer2 (as below). Is this a result of the QVTKWidget caching
> the
> > image data, and if so, how can I make it update? Thanks!
> >
> > ==================
> >
> >   gridData = vtkImageData::New();
> >
> > // etc.
> >
> >   gridData->
> > SetScalarTypeToFloat();
> >   gridData->AllocateScalars();
> >   gridData->GetPointData()->GetScalars()->FillComponent(0,0);
> >
> >
> > // The vtkImageData *gridData is modified via calls to
> SetScalarComponent...
> >
> >
> >
> gridData->SetScalarComponentFromDouble((int)pos[0],(int)pos[1],0,0,intensity);
> >
> >   viewer = vtkImageViewer2::New();
> >   viewer->SetInput(gridData);
> >   viewer->SetupInteractor(this->ui->qvtkWidget->GetInteractor());
> >   viewer->SetRenderWindow(this->ui->qvtkWidget->GetRenderWindow());
> >   viewer->Render();
> >
> > // ... and the modified image is displayed correctly.
> >
> > // But if the vtkImageData *gridData is further modified via calls to
> > SetScalarComponent...
> >
> >
> >
> gridData->SetScalarComponentFromDouble((int)pos[0],(int)pos[1],0,0,intensity);
> >
> >   viewer = vtkImageViewer2::New();
> >   viewer->SetInput(gridData);
> >   viewer->SetupInteractor(this->ui->qvtkWidget->GetInteractor());
> >   viewer->SetRenderWindow(this->ui->qvtkWidget->GetRenderWindow());
> >   viewer->Render();
> >
> > // ...the new changes are still not visible until I click the image.
> >
> > ===================
> >
> > -Garrett Larson
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the VTK FAQ at:
> > http://www.vtk.org/Wiki/VTK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20091123/292dc67d/attachment.htm>


More information about the vtkusers mailing list