当前位置: 首页 > news >正文

在Window上安装和配置VTK9.x,并在QT项目中调试VTK是否可用

前言:工具链

在QT+VTK的项目中,我们所说的工具链是指在通过CMake配置VTK的时候所选择的C++编译器环境是使用MSVC还是MinGW,由于MSVC+VTK无论是在兼容性还是性能上面,都较MinGW更具优势,因此我们通常选择的工具链是MSVC,本文主要介绍在window环境下安装和配置VTK9.x

1 Qt Creator的MSVC配置

首先配置Qr Creator的编译器为MSVC
在这里插入图片描述
按照如图配置构建套件Kit为MSVC,因此最好先安装Virtual Studio

2 CMake-GUI构建VTK源码并使用VS2022编译安装VTK

  • Step01: 先从官网下载Window版本的Vtk源码,我这里下载的是vtk9.4.2,属于是比较新的版本了!

  • Step02:使用CMake-GUI,选择vtk源码路径(包含CMakeList.txt的目录,因为CMake工具是一句CMakeList.txt文件来进行项目构建的),确定vtk构建后的保存路径,如下图所示
    在这里插入图片描述
    弹出对话框,供我们选择编译器,这个时候依据我们主机安装的VS版本选择MSVC的版本以及操作系统的位数(通常是64位)

  • Step03:等待数分钟之后,配置Name/Value键值对,其目的是配置构建过程中的参数以符合我们对VTK库的需求,这里我们为了支持QT,进行了如下配置:
    在这里插入图片描述

    开启QT支持

  • Step04:点击Generate生成适配于MSVC的解决方案,使用VS2022打开.sln(在D:/Packages/VTK-9.4.2/build_msvc下找.sln文件),进行如下操作
    在这里插入图片描述
    然后点击批生成,勾选ALL_BUILD和INSTALL(建议选择Release版本)
    在这里插入图片描述
    在这里插入图片描述
    不出意外的话,你的VTK就配置安装成功了,你就可以在QT上使用VTK了…

3 在Qt项目中验证VTK是否安装成功

CMakeList.txt配置

# 设置VTK相关的变量:VTK_DIR应该指向.cmake的目录路径
set(VTK_INCLUDEDIRS "D:\\ProgramFiles\\VTK-9.4.2\\install_mssvc\\include\\vtk-9.4")
set(VTK_DIR "D:\\ProgramFiles\\VTK-9.4.2\\install_mssvc\\lib\\cmake\\vtk-9.4")
option(USE_QT "Use Qt with VTK" ON)# 寻找外部库VTK
find_package(VTK REQUIRED COMPONENTSCommonCoreCommonDataModelFiltersCoreFiltersGeneralGUISupportQtRenderingQtRenderingCoreRenderingOpenGL2InteractionStyle)

头文件

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);// VTK核心组件
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkGenericOpenGLRenderWindow.h>// VTK Qt集成组件(使用QVTKOpenGLWindow)
#include <QVTKOpenGLWindow.h>
#include <QVBoxLayout>
#include <QWidget>
#include <QSurfaceFormat>
#include <QWidget>

cpp文件

CWnd_3D::CWnd_3D(QWidget *parent): QWidget(parent), ui(new Ui::CWnd_3D)
{ui->setupUi(this);// 创建中央部件和布局QVBoxLayout* layout = new QVBoxLayout(this);// 创建VTK渲染组件vtkSmartPointer<vtkSphereSource> sphere = vtkSmartPointer<vtkSphereSource>::New();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();// 配置渲染管线sphere->Update();mapper->SetInputConnection(sphere->GetOutputPort());actor->SetMapper(mapper);renderer->AddActor(actor);renderer->SetBackground(0.7, 0.8, 0.8);// 创建渲染窗口vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow =vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();renderWindow->AddRenderer(renderer);// 创建QVTKOpenGLWindow并设置渲染窗口QVTKOpenGLWindow* vtkWindow = new QVTKOpenGLWindow();vtkWindow->setRenderWindow(renderWindow);// 将QWindow包装为QWidget以集成到布局中QWidget* vtkWidget = QWidget::createWindowContainer(vtkWindow, this);layout->addWidget(vtkWidget);
}

运行效果展示

在这里插入图片描述

相关文章:

  • Lrc歌词分析
  • 简单了解一下Hugging Face(抱抱脸)
  • C++中的右值引用与移动语义的理解
  • @Transactional注解失效的原因有哪些?
  • 如何对Video视频进行SEO优化?
  • OLED(SSD306)移植全解-基于IIC
  • Semaphore - 信号量
  • CPP基础
  • 西门子 S7-1200 PLC 海外远程运维技术方案
  • DAX权威指南8:DAX引擎与存储优化
  • 第七章:未名湖畔的樱花网关
  • 书籍推荐 --- 《筚路维艰:中国经济社会主义路径的五次选择》
  • 【信息系统项目管理师-案例真题】2025上半年(第二批)案例分析答案和详解(回忆版)
  • ​​Java 异常处理​​ 的详细说明及示例,涵盖 try-catch-finally、自定义异常、throws 与 throw 的核心概念和使用场景
  • 在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
  • Benchmarking Potential Based Rewards for Learning Humanoid Locomotion
  • 关于锁策略的简单介绍
  • 固态继电器与驱动隔离器:电力系统的守护者
  • C++.OpenGL (6/64)坐标系统(Coordinate Systems)
  • 为什么要对邮件列表清洗?
  • 如何做b2b网站信息/网络测试
  • 杭州做企业网站/市场营销手段13种手段
  • 自己的电脑建网站/做网络推广一般是什么专业
  • 怎么建设百度网站/西安百度快照优化
  • 建设银行网站怎么下载/做网站的公司有哪些
  • 沭阳各乡镇做网站/今天热搜前十名