版本是qt5+vtk9.2
#include "mainwindow.h"
#include "ui_mainwindow.h"
//#include <vtkAutoInit.h>
//VTK_MODULE_INIT(vtkRenderingOpenGL2)
//VTK_MODULE_INIT(vtkInteractionStyle)
#include <iostream>
#include "vtkCGNSReader.h"
#include "vtkCGNSFileSeriesReader.h"
#include "vtkCell.h"
#include "vtkMultiBlockDataSet.h"
using namespace std;
#include "vtkNew.h"
#include "vtkStructuredGrid.h"
#include "vtkUnstructuredGrid.h"
#include "vtkTestUtilities.h"
#include "vtkCompositeDataGeometryFilter.h"
#include "vtkGeometryFilter.h"
#include "vtkPolyDataMapper.h"
#include "vtkDataSetMapper.h"
#include "vtkActor.h"
#include "vtkAssembly.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkDataArraySelection.h"
#include "vtkExtractBlock.h"
#include "vtkExtractArray.h"
#include "vtkInformation.h"
#include "vtkPolyDataWriter.h"
#include "vtkDataSetWriter.h"
#include "vtkDataObjectTree.h"
#include "vtkExtractBlock.h"
#include "vtkCompositeDataWriter.h"
#include <vtkMultiProcessController.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
ui->qvtkwidget->interactor()->SetRenderWindow(nullptr);
ui->qvtkwidget->interactor()->SetInteractorStyle(nullptr);
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
vtkSmartPointer<vtkCGNSReader> reader = vtkSmartPointer<vtkCGNSReader>::New();
reader->SetFileName("test.cgns");
reader->Update();
vtkNew<vtkCompositeDataGeometryFilter> geom;
geom->SetInputConnection(reader->GetOutputPort());
geom->Update();
vtkNew<vtkDataSetMapper> modelmapper;
modelmapper->SetInputConnection(geom->GetOutputPort());
vtkNew<vtkActor> modelActor;
modelActor->SetMapper(modelmapper);
vtkNew<vtkAssembly> assembly;
assembly->AddPart(modelActor);
vtkNew<vtkRenderer> render;
render->AddActor(assembly);
render->SetBackground(160.0 / 255.0, 163.0 / 255.0, 228.0 / 255.0);
ui->qvtkwidget->renderWindow()->AddRenderer(render);
ui->qvtkwidget->renderWindow()->SetMultiSamples(0);
vtkNew<vtkInteractorStyleTrackballCamera> style;
ui->qvtkwidget->interactor()->SetInteractorStyle(style);
ui->qvtkwidget->renderWindow()->Render();
}
参考了https://zhuanlan.zhihu.com/p/377473099?utm_id=0,删除不必要的内容,改为qt代码