知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。
文章目录
直接先把效果放出来,有需要就往下看。
A.h
cpp
// A.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_A.h"
#include <vtkSTLReader.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkGenericOpenGLRenderWindow.h>
class A : public QMainWindow
{
Q_OBJECT
public:
A(QWidget* parent = nullptr);
~A();
private:
Ui::AClass ui;
void initVTK();
};
A.cpp
cpp
// A.cpp
#include "A.h"
A::A(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
// 配置 VTK 的初始设置
initVTK();
}
A::~A()
{
}
void A::initVTK()
{
// 读取 STL 文件
vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName("skull_50.stl"); // 请替换为你的 STL 文件路径
reader->Update();
// 创建映射器和演员
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// 创建渲染器
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
// 添加演员到渲染器
renderer->AddActor(actor);
// 创建渲染窗口和渲染窗口交互器
vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
renderWindow->AddRenderer(renderer);
// 添加到 qvtkWidget 控件中显示
ui.qvtkWidget->setRenderWindow(renderWindow);
// 开始渲染
renderWindow->Render();
}