QT+CMake+VTK在QT中导入VTK库的方法

环境配置

之前写了一个在CMake中使用绝对路径导入的方法链接如下
Qt+VTK+Cmake在Qt项目引入VTK

从环境搭建开始说起, 但是这个方法切换版本可能有点麻烦, 因为是使用系统环境变量的方式, 让CMake的 find_package() 在系统环境变量中找到VTK的库, 如果有版本切换(debug和release互相切换)的需要请在CMakeGUI中切换或者使用set(VTK_DIR "你得VTK路径") (这样不就背离了我想要的不设置绝对路径了吗)

配置vtk的系统环境变量

我们编译好VTK后会执行INSTALL生成, 然后将这个生成的文件夹中的bin文件件路径添加到系统环境变量中
右键此电脑—>点击属性----->点击环境变量
在系统环境变量中找到这个变量
在这里插入图片描述
选择点击编辑

然后在左边点击新建将刚刚上面说的路径添加到进来

我解释一下我这里有两个的原因和用途, 如果你想让CMake的find_package() 找到那个版本的VTK就让那个路径在前面, 比如说我现在图中的vtk编译的版本debug在前面, 那么find_package()找到的版本就是debug, 如果我想要release版本我就把下面的那个路径上移到vtk_install_debug的前面
在这里插入图片描述
当然我上面的vtk在E盘的原因是因为在CMake之前就设置了对应的路径CMAKE_INSTALL_PREFIX的路径, 所以在vs2022中运行INSTALL时就是在这个路径,不然默认是C盘的C:\Program Files (x86) 文件夹下,当然这并不是本文的主题简单说一下一些细节。
在这里插入图片描述
完成环境配置之后开始我们的导入

使用CMake在Qt中导入VTK

这里将用到的几个CMake函数:
find_package() 、target_link_libraries() 、vtk_module_autoinit()
前两个就不赘述了, 后面这个是vtk他们定义的函数, 用来自动初始化模块, 这样就不需要再代码里面添加宏来让模块初始化了.

我的环境版本:

  • QT版本:5.15.2
  • CMake版本: 3.27.0
  • vtk版本:9.1.0
  • visual studio: 2022

创建Qt的CMake项目
下面是这几个文件的内容
CMakeLists.txt
我把多余的东西都删掉了因为我也不知道那些有什么必要, 毕竟CMake我也不是专精

cmake_minimum_required(VERSION 3.5)

project(VTKAndQt VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
# 查找并导入vtk的库
find_package(VTK)

set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
)

add_executable(VTKAndQt ${PROJECT_SOURCES} )

target_link_libraries(VTKAndQt PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
# 链接vtk动态库
target_link_libraries(VTKAndQt PRIVATE ${VTK_LIBRARIES})
# 初始化vtk模块
vtk_module_autoinit(
  TARGETS ${PROJECT_NAME}
  MODULES ${VTK_LIBRARIES}
)

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
// vtk
#include <QVTKOpenGLNativeWidget.h>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

    void testVTK();
private:
    Ui::MainWindow *ui;
    QVTKOpenGLNativeWidget* m_vtkOpenGLWidget;
};
#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

// vtk
#include <vtkActor.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkNew.h>
#include <vtkSphereSource.h>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    m_vtkOpenGLWidget = new QVTKOpenGLNativeWidget(this);
    this->setCentralWidget(m_vtkOpenGLWidget);
    testVTK();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::testVTK()
{
    // 创建小球
    vtkNew<vtkSphereSource> sphere;
    sphere->SetPhiResolution(50);
    sphere->SetThetaResolution(50);
    sphere->SetRadius(4);
    sphere->Update();

    vtkNew<vtkPolyDataMapper> mapper;
    mapper->SetInputConnection(sphere->GetOutputPort());

    vtkNew<vtkActor> actor;
    actor->SetMapper(mapper);
    // 添加到渲染器中
    vtkNew<vtkRenderer> renderer;
    renderer->AddActor(actor);

    m_vtkOpenGLWidget->renderWindow()->AddRenderer(renderer);
    m_vtkOpenGLWidget->renderWindow()->Render();
}

最后的运行结果
在这里插入图片描述
好了vtk + vs + qt +cmake 的教程就到这里, 文章有问题再说.

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建点云开发环境需要安装以下软件: 1. Visual Studio 2017:用于编写C++代码。 2. Qt 5.10.1:用于构建GUI界面。 3. PCL 1.8.1:点云。 4. VTK 8.0:用于可视化点云数据。 以下是具体的步骤: 1. 安装 Visual Studio 2017,选择 C++ 工作负载。此外,还需要安装 CMake。 2. 下载 Qt 5.10.1 安装包并安装。需要安装的组件有:Qt 5.10.1 MSVC2017 64-bit、Qt Visual Studio Tools、Qt Charts 和 Qt Data Visualization。 3. 下载 PCL 1.8.1 for Windows,并解压到一个目录下。 4. 下载 VTK 8.0 for Windows,并解压到一个目录下。 5. 打开 CMake,设置源代码路径为 PCL 的根目录,设置构建路径为一个新的目录(例如:PCL_build)。点击 Configure,选择 Visual Studio 15 2017 Win64 作为生成器,点击 Finish。 6. 在 CMake 找到 VTK_DIR 设置项,将其设置为 VTK 的安装目录(例如:D:/VTK-8.0.0/build)。点击 Configure,然后点击 Generate。 7. 打开 Visual Studio 2017,选择 File > New > Project,选择 Qt Widgets Application。设置项目名称、位置和解决方案名称,然后点击 Create。 8. 在项目属性,选择 C/C++ > General,将 Additional Include Directories 设置为 PCL 的 include 目录(例如:D:/PCL-1.8.1/include/pcl-1.8)和 VTK 的 include 目录(例如:D:/VTK-8.0.0/include/vtk-8.0)。 9. 在项目属性,选择 Linker > General,将 Additional Library Directories 设置为 PCL 的 lib 目录(例如:D:/PCL-1.8.1/lib)和 VTK 的 lib 目录(例如:D:/VTK-8.0.0/build/bin/Release)。 10. 在项目属性,选择 Linker > Input,将 Additional Dependencies 设置为以下:pcl_common_release.lib、pcl_io_ply_release.lib、pcl_visualization_release.lib、vtkCommonCore-8.0.lib、vtkFiltersCore-8.0.lib、vtkInteractionStyle-8.0.lib、vtkRenderingCore-8.0.lib。 11. 编写代码并构建项目,即可开始点云开发。 以上是在 Windows 10、Visual Studio 2017、Qt 5.10.1、PCL 1.8.1 和 VTK 8.0 环境下的点云开发环境搭建步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值