VS2017 + QT5.14.2 + VTK9.2的简单示例代码

2 篇文章 0 订阅

主要是能跑通就行,细节不重要

ui设计界面

要点:

  • qvtkWidget对象是用空白的Widget组件提升为QVTKOpenGLNativeWidget
    在这里插入图片描述

Example.h

#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_Example.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>

class Example : public QMainWindow
{
    Q_OBJECT

public:
    Example(QWidget *parent = nullptr);
    ~Example();

private slots:
	void vtkPipeLine();

private:
    Ui::ExampleClass 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;
};


Example.cpp

#include "Example.h"
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2); //错误:no override found for 'vtkRayCastImageDisplayHelper'.

Example::Example(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
	// 信号槽链接
	connect(ui.pushButton, &QPushButton::clicked, this, &Example::vtkPipeLine);
}

Example::~Example()
{}


void Example::vtkPipeLine()
{
	// rsource
	cylinder = vtkSmartPointer<vtkCylinderSource>::New();
	cylinder->SetHeight(3.0);
	cylinder->SetRadius(1.0);
	cylinder->SetResolution(50);

	// mapper
	cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	cylinderMapper->SetInputConnection(cylinder->GetOutputPort());

	// actor
	cylinderActor = vtkSmartPointer<vtkActor>::New();
	cylinderActor->SetMapper(cylinderMapper);
	// renderer
	renderer = vtkSmartPointer<vtkRenderer>::New();
	renderer->AddActor(cylinderActor);
	renderer->SetBackground(0.1, 0.2, 0.3);
	renderer->ResetCamera();

	// render window
	ui.qvtkWidget->renderWindow()->AddRenderer(renderer);
	ui.qvtkWidget->renderWindow()->SetSize(300, 400);
	
	// render window interactor
	iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	iren->SetRenderWindow(ui.qvtkWidget->renderWindow());
	irStyle = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
	iren->SetInteractorStyle(irStyle);

	iren->Initialize();
	iren->Start();
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗浩多捞

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值