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

1、VTK+QT + cmake编程 三维圆柱体

效果图

一、VTK环境变量设置

添加VTK用户变量,添加完之后重启电脑让环境变量生效

变量:VTK_DIR

值:VTK所在目录

作用为了让cmake能够找到VTK

二、QT Creator 5.12.9新建cmake项目

QT新建项目,选择Qt Widget Application,默认Buid System是qmake

这里我们改为CMake

三、修改CMakeLists.txt文件引入VTK库

按红框添加,作用是查找VTK,和链接VTK库

链接VTK库的时候,会自动引入VTK头文件

cmake_minimum_required(VERSION 3.5) project(untitled LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # QtCreator supports the following variables for Android, which are identical to qmake Android variables. # Check http://doc.qt.io/qt-5/deployment-android.html for more information. # They need to be set before the find_package(Qt5 ...) call. #if(ANDROID) # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") # if (ANDROID_ABI STREQUAL "armeabi-v7a") # set(ANDROID_EXTRA_LIBS # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so) # endif() #endif() find_package(Qt5 COMPONENTS Widgets REQUIRED) find_package(VTK REQUIRED) if(ANDROID) add_library(untitled SHARED main.cpp MainWindow.cpp MainWindow.h MainWindow.ui ) else() add_executable(untitled main.cpp MainWindow.cpp MainWindow.h MainWindow.ui ) endif() target_link_libraries(untitled PRIVATE Qt5::Widgets ${VTK_LIBRARIES})

四、写一个最简单的圆柱体VTKDemo

main.cpp

#include "MainWindow.h" #include <QApplication> #include <QVTKOpenGLNativeWidget.h> #include <vtkSmartPointer.h> #include <vtkCylinderSource.h> #include <vtkActor.h> #include <vtkPolyDataMapper.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkProperty.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); // MainWindow w; // w.show(); auto wd = new QVTKOpenGLNativeWidget(); auto cylinder = vtkSmartPointer<vtkCylinderSource>::New(); cylinder->SetRadius(3); cylinder->SetHeight(5); cylinder->SetResolution(50); // 分辨率 auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(cylinder->GetOutputPort()); auto actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); actor->GetProperty()->SetColor(0.9, 0.3, 0); // 红色 auto render = vtkSmartPointer<vtkRenderer>::New(); render->AddActor(actor); render->SetBackground(0, 0.2, 0.8); // 蓝色 wd->renderWindow()->AddRenderer(render); wd->show(); return a.exec(); }
http://www.zskr.cn/news/1458463.html

相关文章:

  • 如何2分钟搞定iPhone在Windows上的网络共享:终极驱动安装方案
  • FlagOS实现DeepSeekV4八芯片Day0适配技术解析
  • 保姆级教程:I3C总线初始化与动态地址分配实战(基于SDR模式)
  • 蓝桥杯5G仿真平台保姆级配置指南:从BBU到核心网,手把手带你打通第一个5G呼叫
  • 2026年实测AI写作辅助平台榜单(实测甄选版)
  • 从零开始组装电脑:硬件选型、兼容性检查与装机全流程实战指南
  • Qwen3.6-Plus实战:8分钟生成可部署官网的前端工作流
  • RK3568双网口开发板,u-boot下如何固定网络设备?一个env变量ethact就搞定
  • 创客教育中电路设计的多元应用:从模块化到生活场景实践
  • SpringBoot项目OOM排查实录:一个10MB的max-http-header-size配置是如何吃光8G堆内存的
  • 消费返利模式的底层困局:为什么很多平台从一开始就走不远?
  • KAN实战:用5行代码解决偏微分方程,参数效率比传统PINNs高100倍
  • C++多线程安全传参避坑指南:detach()模式下如何正确传递指针和对象?
  • 告别Windows 7!手把手教你用DevEco Studio 2.0.12.201搭建鸿蒙开发环境(附华为账号注册避坑)
  • 从汽车悬架到手机陀螺仪:阻尼振动微分方程在工程中的实际应用盘点
  • 别再让一条宽带拖后腿!H3C防火墙双WAN口负载均衡保姆级配置(附HCL模拟器避坑点)
  • DS18B20测温不准?可能是你的51单片机时序搞错了(AT89C51实战调试心得)
  • Kimi K2.5多智能体协作:任务拆解×角色分工×结果整合
  • 量子不变量在4维流形拓扑研究中的应用
  • 数模小白别乱报!2024年这5个竞赛含金量、难度、适合人群全解析(附数维杯报名攻略)
  • 直流电机改造与太阳能控制器应用:构建人力驱动离网发电系统
  • 基于Arduino与NDIR传感器的巨型模拟CO2监测仪设计与实现
  • 别再乱设了!手把手教你配置交换机与终端设备的以太网双工和速率,避开‘半双工陷阱’
  • 社区商业的破局之道:3200 户小区 90 天 14 万物业费抵扣的可复制裂变模型
  • 从开机到关机:一次点击背后,RAM、ROM和Cache是如何协同工作的?
  • Arduino步进电机驱动机械指针温湿度监测站制作全攻略
  • STK COM互联实战:用向量几何工具为你的卫星仿真场景“搭积木”
  • Windows Server 2022上保姆级安装Veeam Backup Replication 12.0社区版(附硬件配置清单)
  • GPT-4 Turbo编程实测:性能、安全与工程化能力深度解析
  • 保姆级教程:Windows下Cypress EZ-USB FX3 SDK 1.3.3安装与驱动配置全流程