From 82db8df0719dba492acc434206c89f5a62858ac9 Mon Sep 17 00:00:00 2001 From: Krad Date: Tue, 8 Nov 2022 14:27:02 +0800 Subject: [PATCH] Add QVTKOpenGLNativeWidget2 , to fix volume rendering bug after pick. --- src/src/UI/Window/QVTKOpenGLNativeWidget2.cpp | 28 +++++++++++++++++++ src/src/UI/Window/QVTKOpenGLNativeWidget2.h | 22 +++++++++++++++ src/src/UI/Window/VolumeRenderingWindow.cpp | 5 ++-- 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 src/src/UI/Window/QVTKOpenGLNativeWidget2.cpp create mode 100644 src/src/UI/Window/QVTKOpenGLNativeWidget2.h diff --git a/src/src/UI/Window/QVTKOpenGLNativeWidget2.cpp b/src/src/UI/Window/QVTKOpenGLNativeWidget2.cpp new file mode 100644 index 0000000..f6774c8 --- /dev/null +++ b/src/src/UI/Window/QVTKOpenGLNativeWidget2.cpp @@ -0,0 +1,28 @@ +// +// Created by Krad on 2022/11/4. +// + +#include "QVTKOpenGLNativeWidget2.h" + +#include +QVTKOpenGLNativeWidget2::QVTKOpenGLNativeWidget2(QWidget *parent, Qt::WindowFlags f) :QVTKOpenGLNativeWidget(parent,f) { + +} + +QVTKOpenGLNativeWidget2::~QVTKOpenGLNativeWidget2() { + +} + +void QVTKOpenGLNativeWidget2::leaveEvent(QEvent *event) { + QWidget::leaveEvent(event); + if (RenderWindow){ + RenderWindow->Render(); + } +} + +void QVTKOpenGLNativeWidget2::enterEvent(QEvent *event) { + QWidget::enterEvent(event); + if (RenderWindow){ + RenderWindow->Render(); + } +} diff --git a/src/src/UI/Window/QVTKOpenGLNativeWidget2.h b/src/src/UI/Window/QVTKOpenGLNativeWidget2.h new file mode 100644 index 0000000..cdd5477 --- /dev/null +++ b/src/src/UI/Window/QVTKOpenGLNativeWidget2.h @@ -0,0 +1,22 @@ +// +// Created by Krad on 2022/11/4. +// + +#ifndef OMEGAV_QVTKOPENGLNATIVEWIDGET2_H +#define OMEGAV_QVTKOPENGLNATIVEWIDGET2_H + +#include + +class QVTKOpenGLNativeWidget2 :public QVTKOpenGLNativeWidget { + Q_OBJECT + typedef QOpenGLWidget Superclass; +public: + QVTKOpenGLNativeWidget2(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + ~QVTKOpenGLNativeWidget2() override; +protected: + void leaveEvent(QEvent *event) override; + void enterEvent(QEvent *event) override; +}; + + +#endif //OMEGAV_QVTKOPENGLNATIVEWIDGET2_H diff --git a/src/src/UI/Window/VolumeRenderingWindow.cpp b/src/src/UI/Window/VolumeRenderingWindow.cpp index 7b5071f..1bb6356 100644 --- a/src/src/UI/Window/VolumeRenderingWindow.cpp +++ b/src/src/UI/Window/VolumeRenderingWindow.cpp @@ -6,10 +6,10 @@ #include #include -#include #include #include +#include "QVTKOpenGLNativeWidget2.h" #include "Common/SeriesImageSet.h" #include "Rendering/Viewer/VolumeRenderingViewer.h" #include "UI/Widget/ToolBar/VolumeRenderingToolBar.h" @@ -27,8 +27,7 @@ VolumeRenderingWindow::VolumeRenderingWindow(QWidget *parent , Qt::WindowFlags f layout->setSpacing(0); auto toolBar = new VolumeRenderingToolBar(this); layout->addWidget(toolBar); - auto widget = new QVTKOpenGLNativeWidget(this); - + auto widget = new QVTKOpenGLNativeWidget2(this); vtkNew renderer; mViewer->SetRenderWindow(mRenderWin); mViewer->SetRenderer(renderer);