【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。

编号 内容
1 【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK
2 【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
3 【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
4 【VTK】官方示例,移植到自己的 Qt 工程,含代码

关于更多此例子的资料,可以参考:【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK。

完成了使用 Qt 来显示一个小球的例子后,我还尝试从 VTK 官网上下载了一个例子,然后自己尝试着将其移植到了自己的 Qt 工程中,感兴趣可以看:【VTK】官方示例,移植到自己的 Qt 工程,含代码。

文章目录

  • 版本环境
  • `VTKTest.ui`
  • `VTKTest.h`
  • `VTKTest.cpp`
  • `main.cpp`
  • 运行结果
  • Ref.

版本环境

版本环境为:

  • win11
  • visual studio 2022
  • VTK-9.2.6
  • CMake 3.26.3
  • Qt 6.2.8

VTKTest.ui

【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK_第1张图片

VTKTest.h

#pragma once

#include 
#include "ui_VTKTest.h"

#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include "vtkAutoInit.h"

class VTKTest : public QMainWindow
{
    Q_OBJECT

public:
    VTKTest(QWidget* parent = nullptr);
    //VTKTest(QWidget* parent = Q_NULLPTR);
    ~VTKTest();

private slots:
    void on_pushButton_clicked();

private:
    Ui::VTKTestClass ui;
};

VTKTest.cpp

#include "VTKTest.h"

VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);

VTKTest::VTKTest(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
}

VTKTest::~VTKTest()
{}

void VTKTest::on_pushButton_clicked()
{
    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
    //QVTKOpenGLNativeWidget* widget = new QVTKOpenGLNativeWidget();

    vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();

    vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();

    vtkSmartPointer<vtkPolyDataMapper> sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();

    sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
    vtkSmartPointer<vtkActor> sphereActor = vtkSmartPointer<vtkActor>::New();

    sphereActor->SetMapper(sphereMapper);
    sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());

    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(sphereActor);
    renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());

    vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
    renderWindow->AddRenderer(renderer);
    renderWindow->SetWindowName("RenderWindowNoUIFile");

    ui.qvtkWidget->setRenderWindow(renderWindow);
    ui.qvtkWidget->resize(200, 160);
    ui.qvtkWidget->show();

}

main.cpp

#include "VTKTest.h"
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    VTKTest w;
    w.show();
    return a.exec();
}

运行结果

【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK_第2张图片

Ref.

  1. QVTKOpenGLNativeWidget在Qt中的用法
  2. VTK+Qt的第一个例子
  3. C++ 泛型编程
  4. C++ 模板
  5. C语言带参数的宏定义

你可能感兴趣的:(Visual,Studio,windows,qt)