qvtkwidgetsapplication1.h:
#pragma once
#include
#include "ui_qvtkwidgetsapplication1.h"
#include "vtkSmartPointer.h"
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkLight.h"
#include "vtkCamera.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
class QVTKWidgetsApplication1 : public QWidget
{
Q_OBJECT
public:
QVTKWidgetsApplication1(QWidget *parent = Q_NULLPTR);
private slots:
void on_pushButton_clicked();
private:
Ui::QVTKWidgetsApplication1Class ui;
vtkSmartPointer<vtkCylinderSource> cylinder;
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper;
vtkSmartPointer<vtkActor> cylinderActor;
vtkSmartPointer<vtkLight> light;
vtkSmartPointer<vtkCamera> camera;
vtkSmartPointer<vtkRenderer> renderer;
vtkSmartPointer<vtkRenderWindowInteractor> iren;
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style;
};
qvtkwidgetsapplication1.cpp:
#include "qvtkwidgetsapplication1.h"
#include "stdafx.h"
QVTKWidgetsApplication1::QVTKWidgetsApplication1(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
void QVTKWidgetsApplication1::on_pushButton_clicked()
{
cylinder = vtkCylinderSource::New();
cylinder->SetHeight(3.0);
cylinder->SetRadius(1.0);
cylinder->SetResolution(20);
cylinderMapper = vtkPolyDataMapper::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
cylinderActor = vtkActor::New();
cylinderActor->SetMapper(cylinderMapper);
renderer = vtkRenderer::New();
renderer->AddActor(cylinderActor);
renderer->SetBackground(0.1, 0.2, 0.3);
ui.qvtkWidget->GetRenderWindow()->AddRenderer(renderer);
ui.qvtkWidget->GetRenderWindow()->SetSize(300,400);
iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(ui.qvtkWidget->GetRenderWindow());
style = vtkInteractorStyleTrackballCamera::New();
iren->SetInteractorStyle(style);
iren->Initialize();
iren->Start();
}
总体而言就是注意之前vtkRenderWindow的类不需要新建,直接使用在ui_qvtkwidgetsapplication1.h定义的QVTKWidget *qvtkWidget即可。
效果:
点击pushButton即可生成如下效果。