Ubuntu20.04上,VTK9.3在QT5上的环境配置与开发测试

Ubuntu20.04上,VTK9.3在QT5上的环境配置与开发测试

  • 1 背景介绍
  • 2 VTK9.3的编译安装
    • 2.1 安装ccmake 和 VTK 的依赖项:
    • 2.2 建立VTK编译文件夹并下载
    • 2.3 cmake配置VTK9.3的编译环境
    • 2.4 make编译安装VTK9.3
    • 2.5 测试VTK安装是否成功
  • 3 基于qmake的QT5的VTK9.3开发

1 背景介绍

项目需要,需要在Ubuntu上,基于VTK进行QT界面的开发,其中,VTK的版本为9.3,QT具体为5.12.0。然而,现有大部分为基于VTK8.2的QT上位机的界面开发,关于VTK9.3的环境配置与使用方法很少,VTK9.3在VTK8.2上的改动又很多,无法基于VTK8.2的教程复线VTK9.3,因此,这里记录一下环境配置与测试开发过程,以供后续参考。

2 VTK9.3的编译安装

这里,不再详细介绍QT的安装了,这个网上教程非常多,因此,重点仍在VTK9.3的编译安装上。首先,提供VTK9.3的官方编译安装教程,链接如下。这里,我们参考较为简单的安装编译教程,主要步骤如下:

2.1 安装ccmake 和 VTK 的依赖项:

sudo apt install build-essential cmake cmake-curses-gui \
mesa-common-dev mesa-utils freeglut3-dev

上述为参考官方提供的教程,事实上有些依赖与库可能在后续安装是多余的,

2.2 建立VTK编译文件夹并下载

mkdir -p ~/vtk
git clone --recursive https://gitlab.kitware.com/vtk/vtk.git ~/vtk/source

2.3 cmake配置VTK9.3的编译环境

cd vtk
mkdir build
cd build
cmake-gui

上述命令下,将打开cmake的UI界面,配置源文件及生成文件路径,并设置generate为Unix Makefiles,具体如下图所示:
在这里插入图片描述

在完成第一轮configure后,会产生界面如下图所示,其中,需要修改部分配置,主要包括:

  • BUILD_SHARED_LIBS:True;
  • CMAKE_BUILD_TYPE:Release;
  • CMAKE_INSTALL_PREFIX:/usr/local;
  • VTK_GROUP_ENABLE_QT:Yes;
    在这里插入图片描述

修改完成后,点击configure,进行第一次configure,结果如下图所示:
在这里插入图片描述这里,只需修改VTK_QT_VERSION,将其调整为5即可,即默认使用QT5版本。完成后,点击configure,configure成功后,再点击Generate,至此,完成VTK9.3的编译环境的配置

2.4 make编译安装VTK9.3

在上述步骤完成之后,即可开始编译安装VTK9.3。运行命令如下:

sudo make -j8
sudo make install

至此,即完成Ubuntu20.04上,VTK9.3的安装。

2.5 测试VTK安装是否成功

参考官网上,VTK9.3的QT实例,即可验证VTK9.3是否安装成功,参考链接如下。由于该页面有详细使用教程,这里不再赘述。
在这里插入图片描述

3 基于qmake的QT5的VTK9.3开发

由于官方示例中,使用cmake进行环境配置,但是我使用qmake配置,因此,这里补充说明以下,如何通过qmake,完成QT上的VTK9.3的环境配置与开发。
首先,在控件栏选择添加OpenGL Widget,然后,选择该控件,右击并选择提升为,在提升的类名称中输入:QVTKOpenGLNativeWidget;头文件为QVTKOpenGLNativeWidget.h,选择全局,并点击提升。
在这里插入图片描述完成对VTK控件的添加后,在QT的项目配置文件xxxx.pro中,添加头文件与依赖库路径,如下所示:

INCLUDEPATH += $$PWD/../../../../../usr/local/include/vtk-9.3/
LIBS += /usr/local/lib/libvtk*-9.3.so

至此,即完成了QT上的VTK环境的基本配置功能,即可开始项目的具体开发工作。在项目开发过程中,推荐参考官网示例,进行进一步的开发工作,官方示例教程与API参考链接如下。关于项目的测试程序,如有需要,请在评论区提供邮箱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2906123.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙实战开发-使用常用组件与布局实现登录、首页、我的三个页面

介绍 HarmonyOS ArkUI提供了丰富多样的UI组件,您可以使用这些组件轻松地编写出更加丰富、漂亮的界面。在本篇Codelab中,您将通过一个简单的购物社交应用示例,学习如何使用常用的基础组件和容器组件。 本示例主要包含:“登录”、…

系统开发实训小组作业week5 —— 用例描述与分析

目录 4.3 UC003电影浏览与查询 4.3.1 用例描述 4.3.2 活动图 4.3.3 界面元素 4.3.4 功能 4.4 UC004在线订票 4.4.1 用例描述 4.4.2 活动图 4.4.3 界面元素 4.4.4 功能 4.3 UC003电影浏览与查询 4.3.1 用例描述 用例号 UC003-01 用例名称 电影浏览与查询 用例描述…

【Hexo + Github 搭建自己的专属博客】

目录 一、前提环境配置 1. 安装Git和NodeJS 2. 安装Hexo 3. 加载主题 4. 修改主题配置 二、搭建博客 1. 将博客部署在GitHub上 2. 写文章并上传 3. 配置一些特效 三、最终成果 ​编辑 一、前提环境配置 1. 安装Git和NodeJS 在 Windows 上使用 Git ,可以…

独立站如何采集商品?外贸独立站采集教程

最近和一位仿牌的卖家聊天,他想建个站做日本市场。除了产品素材、suk以外其它都能搞定,找到我帮忙。从这里Robert了解到还有国内有很多仿牌卖家、微商,都有类似的情况,他们出海的阻碍主要在于支付、物流、推广。只要解决了这些问题…

网站业务对接DDoS高防

准备需要接入的网站域名清单,包含网站的源站服务器IP(仅支持公网IP的防护)、端口信息等。所接入的网站域名必须已完成ICP备案。如果您的网站支持HTTPS协议访问,您需要准备相应的证书和私钥信息,一般包含格式为.crt的公…

Docker部署MongoDB+整合Mongo版MyBatis—Plus

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、 MongoDB简介1.1 适用场景1.2 应…

【跟着CHATGPT学习硬件外设 | 05】I2C

本文根据博主设计的Prompt由CHATGPT生成,形成极简外设概念。 🚀 1. 概念揭秘 I2C(Inter-Integrated Circuit),也被称为IIC或双线接口,是一种用于微控制器(Microcontrollers)和外设…

Rust控制台输出跑马灯效果,实现刷新不换行,实现loading效果

要在 Rust 中实现控制台刷新而不换行,以实现类似 "loading" 状态的效果,你可以使用 \r(回车符)来覆盖上一行的内容。 use std::io::{self, Write}; use std::thread; use std::time::Duration;fn main() {let loading_…

零拷贝技术探讨

零拷贝技术是一种用于提高数据传输效率的网络技术,主要应用于网络服务器中。它通过减少数据在操作系统内核空间和用户空间之间的复制次数来提高性能。 在传统的网络服务器中,当客户端向服务器发送请求时,服务器会从磁盘读取数据,…

tab切换组件,可横向自适应滑动

示例图&#xff1a; 注&#xff1a;需要引入Jquery <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.tabs-box {width: 100%;height: auto;}.tab-header-box {display: flex;overflow: hidden…

Prometheus +Grafana +node_exporter可视化监控Linux + windows虚机

1、介绍 背景&#xff1a;需要对多台虚机进行负载可视乎监控&#xff0c;并进行及时的报警 2、架构图 node_exporter &#xff1a;主要是负责采集服务器的信息。 Prometheus &#xff1a;主要是负责存储、抓取、聚合、查询方面。 Grafana &#xff1a; 主要是…

亚信安慧AntDB引领优质解决方案

亚信安慧AntDB数据库在运营商自主可控替换项目中的成功应用&#xff0c;具有极其重要的意义。该数据库的落地&#xff0c;不仅为这一项目注入了强大的支持力量&#xff0c;还在更大程度上提升了整体的运营效能。作为一种高效可靠的数据库解决方案&#xff0c;AntDB引入了先进的…

2.9 Python缩进规则(包含快捷键)

Python缩进规则&#xff08;包含快捷键&#xff09; 和其它程序设计语言&#xff08;如 Java、C 语言&#xff09;采用大括号“{}”分隔代码块不同&#xff0c;Python采用代码缩进和冒号&#xff08; : &#xff09;来区分代码块之间的层次。 在 Python 中&#xff0c;对于类…

ps 常用命令

ps 常用命令 什么是ps&#xff1f; ps是process status的缩写&#xff0c;用于查看当前系统中运行的进程信息。它提供了关于进程的各种详细信息&#xff0c;如进程 PID、进程状态、CPU 使用情况、内存占用、运行时间等。 常用选项参数 -A &#xff1a;所有的进程均显示出来…

接口自动化框架搭建(三):pytest库安装

1&#xff0c;使用命令行安装 前提条件&#xff1a;已安装python环境 pip install pytest 或者 pip3 install pytest2&#xff0c;从编译器pycharme中安装

如何选择指纹浏览器?盘点好用是防关联浏览器

在网络世界中&#xff0c;保护您的在线隐私和安全非常重要。反检测浏览器是专门为此诞生的工具&#xff0c;旨在通过更改浏览器指纹来帮助您做到这一点&#xff0c;它们使网站、广告商和其他人很难跟踪您的在线行为。 一、什么是反检测浏览器&#xff1f; 您是否想过网站如何检…

『大模型笔记』提示工程、微调和RAG之间对比

提示工程、微调和RAG之间对比 文章目录 一. 提示工程、微调和RAG之间对比二. 参考文章文章:Prompt Engineering vs Finetuning vs RAG一. 提示工程、微调和RAG之间对比 Prompt EngineeringFinetuning

基于FPGA实现的自适应三速以太网

一、三速以太网 千兆以太网PHY芯片是适配百兆和十兆的&#xff0c;十兆就不管了&#xff0c;我们的设计只适应千兆和百兆。 根据上图&#xff0c;我们是可以获取当前主机网口的速率信息的。 always(posedge w_rxc_bufr) beginif(w_rec_valid d0) beginro_speed < w_rec_…

京东商品详情采集API商品价格商品详情抓取API接口(可测试)

京东的商品详情采集API涉及到京东的开放平台服务。如果你想要获取京东商品的价格、详情等信息&#xff0c;通常需要使用京东提供的官方API接口。这些接口需要注册开发者账号&#xff0c;并申请相应的API密钥才能使用。 请求示例&#xff0c;API接口接入Anzexi58 不过&#xff…

iOS开发进阶(十一):ViewController 控制器详解

文章目录 一、前言二、UIViewController三、UINavigationController四、UITabBarController五、UIPageViewController六、拓展阅读 一、前言 iOS 界面开发最重要的首属ViewController和View&#xff0c;ViewController是View的控制器&#xff0c;也就是一般的页面&#xff0c;…