Bladeren bron

Merge branch 'slicer-1914-fix-ctkVTKSliceView-resize-event'

* slicer-1914-fix-ctkVTKSliceView-resize-event:
  Emit ctkVTKSlicerView::resized after vtkRenderWindow size is set.
Jean-Christophe Fillion-Robin 11 jaren geleden
bovenliggende
commit
8bebbc92df

+ 18 - 3
Libs/Visualization/VTK/Widgets/ctkVTKSliceView.cpp

@@ -93,6 +93,7 @@ ctkVTKSliceView::ctkVTKSliceView(QWidget* parentWidget)
 {
   Q_D(ctkVTKSliceView);
   d->init();
+  this->VTKWidget()->installEventFilter(this);
 }
 
 // --------------------------------------------------------------------------
@@ -223,10 +224,24 @@ void ctkVTKSliceView::setColorWindow(double newColorWindow)
 }
 
 //----------------------------------------------------------------------------
-void ctkVTKSliceView::resizeEvent(QResizeEvent * event)
+bool ctkVTKSliceView::eventFilter(QObject *object, QEvent *event)
 {
-  this->QWidget::resizeEvent(event);
-  emit this->resized(event->size());
+  Q_D(ctkVTKSliceView);
+  if (object == this->VTKWidget())
+    {
+    if (event->type() == QEvent::Resize)
+      {
+      QResizeEvent * resizeEvent = dynamic_cast<QResizeEvent*>(event);
+      object->event(event);
+      emit this->resized(resizeEvent->size());
+      return true;
+      }
+    return false;
+    }
+  else
+    {
+    return this->Superclass::eventFilter(object, event);
+    }
 }
 
 //----------------------------------------------------------------------------

+ 1 - 1
Libs/Visualization/VTK/Widgets/ctkVTKSliceView.h

@@ -131,7 +131,7 @@ Q_SIGNALS:
   void resized(const QSize& size);
 
 protected:
-  virtual void resizeEvent(QResizeEvent * event);
+  virtual bool eventFilter(QObject *object, QEvent *event);
 
 private:
   Q_DECLARE_PRIVATE(ctkVTKSliceView);