Add QVTKOpenGLNativeWidget2 , to fix volume rendering bug after pick.

This commit is contained in:
Krad
2022-11-08 14:27:02 +08:00
parent 5840c44766
commit 82db8df071
3 changed files with 52 additions and 3 deletions

View File

@@ -0,0 +1,28 @@
//
// Created by Krad on 2022/11/4.
//
#include "QVTKOpenGLNativeWidget2.h"
#include <vtkGenericOpenGLRenderWindow.h>
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();
}
}

View File

@@ -0,0 +1,22 @@
//
// Created by Krad on 2022/11/4.
//
#ifndef OMEGAV_QVTKOPENGLNATIVEWIDGET2_H
#define OMEGAV_QVTKOPENGLNATIVEWIDGET2_H
#include <QVTKOpenGLNativeWidget.h>
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

View File

@@ -6,10 +6,10 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <qdebug.h> #include <qdebug.h>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkRenderer.h> #include <vtkRenderer.h>
#include <vtkGenericOpenGLRenderWindow.h> #include <vtkGenericOpenGLRenderWindow.h>
#include "QVTKOpenGLNativeWidget2.h"
#include "Common/SeriesImageSet.h" #include "Common/SeriesImageSet.h"
#include "Rendering/Viewer/VolumeRenderingViewer.h" #include "Rendering/Viewer/VolumeRenderingViewer.h"
#include "UI/Widget/ToolBar/VolumeRenderingToolBar.h" #include "UI/Widget/ToolBar/VolumeRenderingToolBar.h"
@@ -27,8 +27,7 @@ VolumeRenderingWindow::VolumeRenderingWindow(QWidget *parent , Qt::WindowFlags f
layout->setSpacing(0); layout->setSpacing(0);
auto toolBar = new VolumeRenderingToolBar(this); auto toolBar = new VolumeRenderingToolBar(this);
layout->addWidget(toolBar); layout->addWidget(toolBar);
auto widget = new QVTKOpenGLNativeWidget(this); auto widget = new QVTKOpenGLNativeWidget2(this);
vtkNew<vtkRenderer> renderer; vtkNew<vtkRenderer> renderer;
mViewer->SetRenderWindow(mRenderWin); mViewer->SetRenderWindow(mRenderWin);
mViewer->SetRenderer(renderer); mViewer->SetRenderer(renderer);