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

(41)VTK C++开发示例 ---qt使用vtk最小示例

文章目录

    • 1. 概述
    • 2. CMake链接VTK
    • 3. main.cpp文件
    • 4. 演示效果


更多精彩内容
👉内容导航 👈
👉VTK开发 👈

1. 概述

本文演示了在Qt中使用VTK的最小示例程序,使用VTK创建显示一个锥体;

采用Cmake作为构建工具,虽然qmake也可以,但是更推荐CMake。

功能概述:

  1. 初始化 OpenGL 配置
    • 使用 QVTKOpenGLNativeWidget::defaultFormat() 获取 VTK 推荐的 OpenGL 配置,并通过 QSurfaceFormat::setDefaultFormat() 设置为 Qt 的全局默认格式,确保 VTK 和 Qt 的 OpenGL 上下文兼容。
  2. 创建 Qt 应用程序
    • 使用 QApplication 创建一个 Qt 应用程序实例,用于管理应用程序的事件循环。
  3. 创建 VTK 渲染管线
    • 几何体源:使用 vtkConeSource 创建一个圆锥体几何体。
    • 数据映射器:使用 vtkPolyDataMapper 将几何体数据映射到渲染管线。
    • Actor:使用 vtkActor 表示场景中的对象,并将数据映射器绑定到 Actor。
    • 渲染器:使用 vtkRenderer 负责渲染场景,将 Actor 添加到渲染器中,并设置背景颜色。
  4. 集成到 Qt 界面
    • 使用 QVTKOpenGLNativeWidget 创建一个 VTK 和 Qt 集成的渲染窗口小部件。
    • 将渲染器添加到小部件的渲染窗口中。
  5. 显示窗口并运行事件循环
    • 调用 widget.show() 显示渲染窗口。
    • 调用 app.exec() 启动 Qt 的事件循环,保持窗口运行。
环境说明
系统ubuntu22.04、windows11
cmake3.22、3.25
Qt5.14.2
编译器g++11.4、msvc2017
VTK9.4.1

2. CMake链接VTK

cmake_minimum_required(VERSION 3.16)project(untitled 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)
set(VTK_DIR E:/lib/VTK/lib/cmake/vtk-9.4) # 添加VTK库路径
# 查询VTK库
find_package(VTK COMPONENTS
CommonCore
FiltersSources
RenderingCore
GUISupportQt
)if (NOT VTK_FOUND)message("VTK not found")
endif()find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)add_executable(${PROJECT_NAME}
main.cpp
)
target_link_libraries(${PROJECT_NAME} Qt${QT_VERSION_MAJOR}::Widgets ${VTK_LIBRARIES}) # 链接库include(GNUInstallDirs)
install(TARGETS ${PROJECT_NAME}LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)# 设置VTK模块自动初始化
vtk_module_autoinit(
TARGETS ${PROJECT_NAME}
MODULES ${VTK_LIBRARIES}
)

关键添加如下所示三处:
在这里插入图片描述

3. main.cpp文件

#include <QApplication> // 包含 Qt 应用程序类#include <vtkActor.h> // VTK Actor 类,用于表示场景中的对象
#include <vtkConeSource.h> // VTK 圆锥体源,用于生成圆锥几何体
#include <vtkPolyDataMapper.h> // VTK 数据映射器,将几何数据映射到图形管线
#include <vtkRenderWindow.h> // VTK 渲染窗口,用于显示渲染内容
#include <vtkRenderer.h> // VTK 渲染器,负责场景的渲染
#include <QSurfaceFormat> // Qt 表面格式类,用于设置 OpenGL 格式
#include <QVTKOpenGLNativeWidget.h> // VTK 和 Qt 的集成小部件,用于显示 VTK 渲染内容int main(int argc, char* argv[])
{// 统一 Qt 和 VTK 的 OpenGL 上下文配置,解决因 OpenGL 参数不匹配导致的渲染问题。// 通过 QVTKOpenGLNativeWidget::defaultFormat() 获取 VTK 推荐的 OpenGL 配置// 用 QSurfaceFormat::setDefaultFormat() 将其设为 Qt 全局默认格式QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());// 创建 Qt 应用程序对象QApplication app(argc, argv);// 创建一个 VTK-Qt 集成的渲染窗口小部件QVTKOpenGLNativeWidget widget;// 创建一个圆锥体几何体源vtkNew<vtkConeSource> cone;// 创建一个数据映射器,将几何体数据映射到渲染管线vtkNew<vtkPolyDataMapper> mapper;// 创建一个 Actor,用于表示场景中的对象vtkNew<vtkActor> actor;// 创建一个渲染器,负责渲染场景vtkNew<vtkRenderer> renderer;// 将圆锥体几何体的输出连接到数据映射器mapper->SetInputConnection(cone->GetOutputPort());// 将数据映射器设置到 Actoractor->SetMapper(mapper);// 将 Actor 添加到渲染器renderer->AddActor(actor);// 设置渲染器的背景颜色(RGB 值)renderer->SetBackground(0.2, 0.3, 0.4);// 将渲染器添加到渲染窗口小部件widget.renderWindow()->AddRenderer(renderer);// 显示渲染窗口小部件widget.show();// 运行 Qt 应用程序事件循环return app.exec();
}

4. 演示效果

在这里插入图片描述



相关文章:

  • 科创大赛——知识点复习【c++】——第一篇
  • Flink流水线任务在线演示
  • 《类和对象(上)》
  • Python 整理3种查看神经网络结构的方法
  • 虚幻引擎作者采访
  • 什么是原码、反码与补码?
  • 2025流感疫苗指南+卫健委诊疗方案|高危人群防护+并发症处理 慢性肾脏病饮食指南2025卫健委版|低盐低磷食谱+中医调理+PDF 网盘下载 pdf下载
  • 牛客1018逆序数-归并排序
  • 金融的本质是智融、融资的实质是融智、投资的关键是投智,颠覆传统金融学的物质资本中心论,构建了以智力资本为核心的新范式
  • PyTorch 张量与自动微分操作
  • 全球化电商平台Azure云架构设计
  • 期末代码Python
  • iptables的基本选项及概念
  • 串 Part 1
  • 数据链路层(MAC 地址)
  • Gemini 解释蓝图节点的提示词
  • STC单片机与淘晶驰串口屏通讯例程之04【密码登录与修改】
  • 有哪些场景不适合使用Java反射机制
  • 基于C++实现的深度学习(cnn/svm)分类器Demo
  • H3C无线控制器自动信道功率调整典型配置实验
  • 新闻1+1丨多地政府食堂开放 “舌尖上的服务”,反映出怎样的理念转变?
  • “五一”假期预计全社会跨区域人员流动累计14.67亿人次
  • 100%关税!特朗普要让美国电影100%美国制造
  • 蓝佛安主持东盟与中日韩财长和央行行长系列会议并举行多场双边会见
  • 中国驻美国使领馆提醒在美中国公民注意交通安全
  • 5名中国公民在美国交通事故中遇难