首页 > 系统相关 >VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT

VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT

时间:2023-07-21 16:22:44浏览次数:49  
标签:Qt VS2019 VTK rc2 生成 install include 9.1

下载VTK安装包
在VTK官网 Download | VTK 中下载VTK9.1.0待编译源码,解压后在路径Documentation/dev/bulid.md中可以看到官方提供的Prerequisites以及简易教程

编译环境安装
按照官方提供的Prerequisites,安装以下环境:

CMake
Version 3.12 or newer, however, the latest version is always recommended
Qt 5.15.2
Visual Studio Community Edition
Visual Studio 2019
Ninja
Unzip the binary and put it in PATH. Note that newerVisual Studio releases come with a version of ninja already and shouldalready exist in PATH within the command prompt.
编译目录规划
按照官方推荐方式,设置四个文件夹:

VTK-9.1.0.rc2-src
存放VTK官方下载的待编译源码

VTK-9.1.0.rc2-build
存放使用Cmake编译VTK时生成的二进制文件

VTK-9.1.0.rc2-install-debug
存放使用Visual Studio生成的lib文件的Debug版本

VTK-9.1.0.rc2-install-release
存放使用Visual Studio生成的lib文件的Release版本

 

使用Cmake编译VTK库
打开安装的cmake-gui,选择 VTK 源码路径VTK-9.1.0.rc2-src,以及二进制存放路径VTK-9.1.0.rc2-build,点击Configure开始,在弹出的窗口中选择 Visual Studio 16 2019编译,选择后点击 Finish

 

  • 完成Configure后会出现一些红色选项,下面需要解决红色选项

 

其中CMAKE_INSTALL_PREFIX是VTK 库要安装的位置,VTK 编译后生成的库文件所在位置,将位置修改为VTK-9.1.0.rc2-install-debug, 在后续的生成中,先生成Release版本的VTK库,生成后将生成的文件移动到VTK-9.1.0.rc2-install-release,然后生成Debug版本的VTK库,此时生成的文件就存放于VTK-9.1.0.rc2-install-debug文件夹中

 

  • 在搜索窗口中搜索QT,将所有的选项设置为WANT,然后点击Configure

 

 

Configure后会出现新的红色区域,这里是让我们选择 Qt5 的位置,基本是Qt_DIR/5.15.2/msvc2019_64/lib/cmake/Qt*,按左侧的名字勾选,VTK_QT_VERSION为5

 

Configuring done 后,如果只有白色界面,代表没有错误。如果你的界面依旧有红色,返回检查以上哪步没有勾选,一直Configure到只有白色界面,然后点击 Generate
Generate done 后,如果只有白色界面,代表没有错误,然后点击Open Project便会打开Visual Studio 2019

 

Visual Studio 2019 编译安装 VTK

  • Cmake完成以后,点击Open Project便会打开Visual Studio 2019,选择 生成->批生成,在出现的界面中选择ALL_BUILD的Release版本,点击生成后等待生成完成,需要40分钟左右

 

 

  • 把ALL_BUILD Release后面的√去掉,在INSTALL Release后面勾选,点击生成

 

生成完成后即安装VTK的Release版本,此时会安装在前边设置的CMAKE_INSTALL_PREFIX中,即VTK-9.1.0.rc2-install-debug,然后需要把文件剪切到VTK-9.1.0.rc2-install-release文件夹里,此时VTK Release版本生成完成,生成的库文件如下:

 

在生成->批生成里,把刚刚勾选的INSTALL Release后面的√取消。 然后可以直接一起勾选ALL_BUILD DEBUG x64 与INSTALL Debug,生成结束以后,会在VTK-9.1.0.rc2-install-debug文件夹里生成库文件。此时编译阶段完成。生成的 Debug 版本的库后面带 d,与Release版本相区别。
在QT中使用VTK
我写了一个在QT中使用VTK的demo项目,链接为GitHub - isongxw/Qt-VTK-Demo,可直接下载查看,下面是具体步骤

将生成的VTK-9.1.0.rc2-install-debug\bin 与 VTK-9.1.0.rc2-install-release\bin添加到环境变量并重启
在Qt Creator创建QT项目,在*pro文件中添加INCLUDEPATH += "D:\VTK\VTK-9.1.0.rc2-install-debug\include\vtk-9.1"与LIBS,其中LIBS需要添加的lib文件较多,使用以下代码来生成LIBS指令

 1 import os
 2  
 3 def main():
 4     BASEDIR = "D:\VTK\VTK-9.1.0.rc2-install-release\lib"
 5  
 6     fn = os.listdir(BASEDIR)
 7     with open("lib_r.txt", 'w') as fp:
 8         for i in fn:
 9             fp.write("LIBS += {}\{}\n".format(BASEDIR, i))
10     print("hello")
11  
12  
13 if __name__ == "__main__":
14     main()

 

在界面中添加OpenGL Widget,右键点击提升为,提升为QVTKOpenGLNativeWidget,界面如下

  • 添加示例代码使用VTK绘制一个球形,mainwindows.cpp代码如下:
 1 #include "mainwindow.h"
 2 #include "ui_mainwindow.h"
 3 #include <QSurfaceFormat>
 4 #include <QVTKOpenGLNativeWidget.h>
 5 #include <vtkSphereSource.h>
 6 #include <vtkPolyDataMapper.h>
 7 #include <vtkActor.h>
 8 #include <vtkRenderer.h>
 9 #include <vtkRenderWindow.h>
10 #include <vtkGenericOpenGLRenderWindow.h>
11 #include <vtkNamedColors.h>
12 #include <vtkProperty.h>
13 #include <vtkSmartPointer.h>
14  
15 #include "vtkAutoInit.h"
16 VTK_MODULE_INIT(vtkRenderingOpenGL2);
17 VTK_MODULE_INIT(vtkInteractionStyle);
18 VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
19 VTK_MODULE_INIT(vtkRenderingFreeType);
20  
21  
22 MainWindow::MainWindow(QWidget *parent)
23     : QMainWindow(parent)
24     , ui(new Ui::MainWindow)
25 {
26     ui->setupUi(this);
27     QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
28     vtkNew<vtkNamedColors> colors;
29     vtkNew<vtkSphereSource> sphereSource;
30     vtkNew<vtkPolyDataMapper> sphereMapper;
31     sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
32     vtkNew<vtkActor> sphereActor;
33     sphereActor->SetMapper(sphereMapper);
34     sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
35     vtkNew<vtkRenderer> renderer;
36     renderer->AddActor(sphereActor);
37     renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
38     vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
39     renderWindow->AddRenderer(renderer);
40     renderWindow->SetWindowName("RenderWindowNoUIFile");
41     setCentralWidget(ui->openGLWidget);
42     ui->openGLWidget->setRenderWindow(renderWindow);
43 }
44  
45 MainWindow::~MainWindow()
46 {
47     delete ui;
48 }

点击运行后即可出现Qt窗口中的VTK界面

标签:Qt,VS2019,VTK,rc2,生成,install,include,9.1
From: https://www.cnblogs.com/ybqjymy/p/17571747.html

相关文章

  • MQTT 与 Kafka|物联网消息与流数据集成实践
    MQTT如何与Kafka一起使用?MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,专为受限网络环境下的设备通信而设计。ApacheKafka是一个分布式流处理平台,旨在处理大规模的实时数据流。Kafka和MQTT是实现物联网数据端到端集成的互补技术。通过结合使用......
  • 报from PyQt5.QtWidgets import * ImportError: DLL load failed: %1 不是有效的 Win3
    导入时,报fromPyQt5.QtWidgetsimport*ImportError:DLLloadfailed:%1不是有效的Win32application!查了很多资料,发现原来PyQt5安装包也是区分电脑位数的,我的电脑是32位的,装的PyQt5确是64位的,由于我这边用pipinstallPyQt5一直报timeout错误,所以我采用的是去官网直接下......
  • vtk中截取图像显示
    目录1.CmakeLists2.C++实现部分部分项目中需要截取vtk图像进行显示1.CmakeLists#1.设置cmake的最小版本cmake_minimum_required(VERSION3.3...3.12FATAL_ERROR)#2.设置项目名称project(Step2)#3.查找vtkfind_package(VTKREQUIRED)#4.vtk模块的设置vtk_module_confi......
  • Qt5安装未解决
    #installeitherQt4.8or5.x.andmakesureit'sinPKG_CONFIG_PATHsudoapt-getupdateexportPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfigexportPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/binpkg-config--modversionQt5echo$......
  • Qt/C++音视频开发48-推流到rtsp服务器
    一、前言之前已经打通了rtmp的推流,理论上按照同样的代码,只要将rtmp推流地址换成rtsp推流地址,然后格式将flv换成rtsp就行,无奈直接遇到协议不支持的错误提示,网上说要换成rtp,换了也没用,而且打印了ffmpeg库协议,也是支持的,以为用对应的命令行测试推流到rtsp流媒体服务器地址是可以的,用......
  • python vs qt
    PythonvsQt:选择适合你的开发工具引言在软件开发领域,选择合适的工具和框架是至关重要的。Python和Qt是两个非常流行的开发工具,都有自己独特的特点和用途。本文将对Python和Qt进行比较,并为你提供选择适合自己的开发工具的指导。Python简介Python是一种高级编程语言,具有简洁、......
  • VTK mouse event -- 捕捉鼠标动作并发送信号:vtkCommand
    头文件申明:#pragmaonce#include<QObject>#include<vtkCallbackCommand.h>#include<vtkRenderWindow.h>#include<vtkRenderWindowInteractor.h>#include<vtkRenderer.h>#include<vtkSmartPointer.h>classMyMouseCallback:......
  • QT从入门到实战完整版 P30
    自定义封装控件smallWidgt.h#ifndefSMALLWIDGET_H#defineSMALLWIDGET_H#include<QWidget>namespaceUi{classSmallWidget;}classSmallWidget:publicQWidget{Q_OBJECTpublic:explicitSmallWidget(QWidget*parent=nullptr);~SmallWid......
  • QT从入门到实战完整版 P24 P25 P26 P27 P28
    #include"widget.h"#include"ui_widget.h"#include<QDebug>Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);//设置单选按钮男默认选中ui->radioButtonman->setChecked(......
  • QT从入门到实战完整版 P20
    #include"mainwindow.h"#include"ui_mainwindow.h"#include<QDialog>#include<QDebug>MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);//点击新建按......