[vtkusers] Repainting problem with QVTKWidget

Wu Ruoyun MRYWu at ntu.edu.sg
Wed Apr 20 05:48:55 EDT 2005


Dear All,

Forget to mention that you also need to call
setAutomaticImageCacheEnabled( true ); on the QVTKWidget.

Best Wishes!
Ruoyun

-----Original Message-----
From: vtkusers-bounces at vtk.org [mailto:vtkusers-bounces at vtk.org] On
Behalf Of Wu Ruoyun
Sent: Wednesday, April 20, 2005 5:45 PM
To: vtkusers at vtk.org
Subject: RE: [vtkusers] Repainting problem with QVTKWidget

Dear All,

The painting problem mentioned in my previous email could be solved by
modifying the original paintEvent() method as below. Any comments?

Best Wishes!
Ruoyun

void QVTKWidget::paintEvent(QPaintEvent* event)
{
  if (!this->cachedImageCleanFlag)
    {
      vtkRenderWindowInteractor* iren = NULL;
      if(this->mRenWin)
        iren = this->mRenWin->GetInteractor();

      if(!iren || !iren->GetEnabled())
        return;

      iren->Render();
    }

  QPainter painter(this);
  painter.eraseRect( event->rect() );
  painter.drawPixmap(0, 0, this->cachedImage);
}

-----Original Message-----
From: vtkusers-bounces at vtk.org [mailto:vtkusers-bounces at vtk.org] On
Behalf Of Wu Ruoyun
Sent: Wednesday, April 20, 2005 4:01 PM
To: vtkusers at vtk.org
Subject: [vtkusers] Repainting problem with QVTKWidget

Dear All,

I am working with QVTKWidget with Qt 4.0 Beta2 and VTK CVS version,
Windows 2K, Visual Studio C++ 6.

The example of QVTKWidget called "ImageViewer" runs well. However, I got
repainting problem if I put the QVTKWidget as the central widget of a
QMainWindow. The following is the codes. Any mistake in my code or the
QVTKWidget still need some touch up?

Best Wishes!
Ruoyun

#include <QApplication.h>
#include <QMainWindow.h>
#include <QPushButton>
#include <QToolBar.h>
#include <QMenuBar.h>
#include <QMenu.h>

#include <vtkImageViewer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkPNGReader.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <QVTKWidget.h>

int main( int argc, char* argv[] ) 
{
    QApplication app(argc, argv);
    QMainWindow window;
    window.addToolBar( new QToolBar( "Tools", &window ) );
    QMenu* menu = window.menuBar()->addMenu("&File");
    menu->addAction("&Quit", &window, SLOT(close()));

    /*
    //**** The normal Qt widget (a button here) repaints fine
    QPushButton hello("Hello world!",&window);
    hello.resize(100, 30);
    window.setCentralWidget( &hello );
    //****
    */

    //**** Works if interacting, but not repainted well
    QVTKWidget* widget = new QVTKWidget( &window );
    widget->resize(256,256);

    vtkPNGReader* reader = vtkPNGReader::New();
    char* fname = "E:/Projects/vtk42/VTKData-release-4-2/Data/vtk.png";
    reader->SetFileName(fname);

    vtkImageViewer* image_view = vtkImageViewer::New();
    image_view->SetInput(reader->GetOutput());

    widget->SetRenderWindow(image_view->GetRenderWindow());
 
image_view->SetupInteractor(widget->GetRenderWindow()->GetInteractor());
    
    window.setCentralWidget( widget );
    //****

    window.show();
    return app.exec();
}

-----Original Message-----
From: vtkusers-bounces at vtk.org [mailto:vtkusers-bounces at vtk.org] On
Behalf Of Wu Ruoyun
Sent: Monday, April 18, 2005 5:07 PM
To: vtkusers at vtk.org
Subject: [vtkusers] QVTKWidget work with Qt 4.0.0 Beta 2?

Dear All,

Has anyone make QVTKWidget work with Trolltech's newly released Qt 4.0.0
Beta 2? I got a number of errors and warnings when compiling.

Best Wishes!
Ruoyun

_______________________________________________
This is the private VTK discussion list. 
Please keep messages on-topic. Check the FAQ at:
http://www.vtk.org/Wiki/VTK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers
_______________________________________________
This is the private VTK discussion list. 
Please keep messages on-topic. Check the FAQ at:
http://www.vtk.org/Wiki/VTK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers
_______________________________________________
This is the private VTK discussion list. 
Please keep messages on-topic. Check the FAQ at:
http://www.vtk.org/Wiki/VTK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers



More information about the vtkusers mailing list