【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。

编号内容
1【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK
2【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
3【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
4【VTK】官方示例,移植到自己的 Qt 工程,含代码

之前在 Windows 上完成了使用 Visual Studio 构建 VTK,这一篇结合实现 Qt 在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK。之前的文章链接为:【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK。

文章目录

  • 1 版本环境
  • 2 构建步骤
    • 1 准备文件夹结构
    • 2 运行 CMake
  • 这里的图需要替换
  • 图需要替换
    • 3 在 Visual Studio 中构建
  • 3 测试是否成功
    • 1 新建工程
    • 2 工程配置
    • 3 运行结果
  • 附录
  • Ref.

1 版本环境

  • win11
  • visual studio 2022
  • VTK-9.2.6
  • CMake 3.26.3
  • Qt 6.2.8

2 构建步骤

建议全程打开 CMake 和 Visual Studio 时均使用管理员身份,防止不必要的麻烦。同时,如果电脑上提前在 Visual Studio 里安装了 Qt VS Tool,那么请提前卸载,最好再重启一下电脑。

如果不知道如何安装卸载 Qt VS Tool,可以参考:【VisualStudio】基于 Visual Studio 使用 C++ 语言开发 Qt 环境配置教程。

1 准备文件夹结构

我是在 C 盘创建了一个 VTKFolders 来保存所有需要的文件。

在这里插入图片描述

2 运行 CMake

使用 CMake 生成一个 visual studio 解决方案。

首先以管理员身份打开 CMake-GUI。配置好资源文件夹和 build 文件夹。然后点击 Configure。

在这里插入图片描述

会弹出一个选择框,选择适合自己的配置,然后 Finish。

我电脑上安装了一个 32 位的 Qt 5.12.12 和 64 位的 Qt 6.2.8,测试了好多遍 Qt 5,都是不能用,所以我选择了 64 位的 Qt 6.2.8来安装,至于 32 位的 Qt 6 系列能不能用,我没有测试。

这里的图需要替换

在这里插入图片描述

我们现在有几个选项,可以根据需要打开或关闭。如:

  • 修改 CMAKE_INSTALL_PREFIX 为你想指定的文件夹
  • 勾选 Advanced,搜索 qt,将所有选项都选成 Yes。

在这里插入图片描述

在这里插入图片描述

然后点击 Configure,可以多点击几次,一直到没有红色警告提示了。

这时候有可能会出现找不到 Qt 的情况,这是因为 Qt 的环境没有添加到系统的环境变量里。可以通过下图所示,将 Qt 添加到环境变量。注意,由于各自配置的文件夹不同,所以路径仅供参考。

不知道怎么打开系统环境变量的可以根据以下提示:
[start -> Edit the system environment variables -> Advanced -> Environment Variables -> Path -> Edit -> New]

在这里插入图片描述
配置完系统环境变量后,然后重启 CMake-GUI,再次 Configure,即可自动搜索到 Qt。
之后 Generate,这将填充 VTK-build 子文件夹。Open Project 就进入到 Visual Studio 工程里了。

图需要替换

在这里插入图片描述

3 在 Visual Studio 中构建

选择 Release 和 X64。
然后选择右键 ALL_BUILD -> 生成。

在这里插入图片描述

根据电脑性能不同,花费时间也不同。我电脑用了 3 分钟,报告显示成功 270,有 2 个失败。我继续往下进行了,目前问题不大。
然后我们就可以在文件夹中看到很多 .dll 文件。
放一下我自己的文件夹路径仅供参考 C:\VTKFolders\VTK-build\bin\Release

在这里插入图片描述

在这里插入图片描述

然后出错了 setlocal 的错误。这是一个比较典型的错误,我也尝试了网上分享的几种办法,但是都不适合我。

在这里插入图片描述

尝试下边这种解决办法。将生成后事件改成了否。然后再右键 INSTALL 工程,点击重新生成。

在这里插入图片描述

虽然不再报错 setlocal,但是还是不行。

在这里插入图片描述

最后尝试使用管理员身份打开 Visual Studio 工程,然后再右键 INSTALL 工程,点击重新生成,还是不行。

最后的最后,发现不用管,往下就行了。

3 测试是否成功

1 新建工程

如果一切顺利,那么现在应该可以编译并运行 C++ 示例了。
这里我测试的是,是否能将 Widget 控件提升为 QVTKOpenGLNativeWidget 并成功运行。

新建一个 Qt 工程,名字为 VTKTest,拖进一个 Widget 控件,提升其为 QVTKOpenGLNativeWidget 并得到如下图所示的工程界面。

不知道怎么进提升 Widget 的可参考:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。

在这里插入图片描述

2 工程配置

然后添加 Qt OpenGLWidgets。

不知道怎么进入这个界面可参考:【Visual Studio】报错 LNK2019,使用 C++ 语言,配合 Qt 开发串口通信界面 或 【Visual Studio】报错 C1083,使用 C++ 语言,配合 Qt 开发串口通信界面。

在这里插入图片描述

然后按照下图所示添加需要的库文件。

不知道如何打开这个界面的可参考:【Visual Studio】合并C++工程的 .h .lib .dll 文件,包括全部配置过程。Bug 报错 E1696 无法打开源文件,使用 C++ 语言,配合 Qt 开发串口通信界面。

在这里插入图片描述

在这里插入图片描述
同时再截图一下自己的 Qt 版本。有时候也会因为版本问题会出现各种错误。

在这里插入图片描述

3 运行结果

运行成功后的结果如下图所示:

在这里插入图片描述

附录

因为一直配置不成功,中间还尝试过更换 VTK 的版本,更换为 VTK-9.0.3 后,结果错误更多了。
所以最后还是狠下心,就是搞现在手里这个版本把。索性最后把所有错误都犯了一遍后,也成功了。

在这里插入图片描述
在这里插入图片描述


Ref.

  1. VTK与QT源码编译和示例
  2. QT5+VTK9.1最新配置方法

QVTKOpenGLNativeWidget在Qt中的用法

我的第一个VTK程序–绘制球体

VTK读取一个TXT文档中的三维点坐标显示三维点云

VTK以批量三维点坐标为中心(点云)绘制球体,可用于标识特征点或者是化学分子


VTK 配置.md

VTK v9.0新版本找不到QVTKWidget.h头文件了?Qt设计师怎么办?

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCv色彩空间

目录 一、RGB 二、图像处理入门 三、色彩空间的转换 一、RGB 在表示图像时,有多种不同的颜色模型,但最常见的是红、绿、蓝(RGB) 模型RGB 模型是一种加法颜色模型,其中原色 (在RGB模型中,原色是红色 R、绿色 G 和蓝色 B)混合在…

打工人如何利用自动化实现职场突围

作为优秀的打工人,如果可以将办公中的重复性、繁琐性、低效性工作自动化,那么将省去许多日常工作。许亚宁就是这样一个优秀的打工人,善于使用各类自动化工具来提升工作效率,上周的直播他分享了如何利用自动化工具,实现…

Qt,day4

闹钟 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("闹钟");this->setWindowIcon(QIcon("D:\\HQYJRJ\\QT\\day1\\…

运输层(TCP运输协议相关)

运输层 1. 运输层概述2. 端口号3. 运输层复用和分用4. 应用层常见协议使用的运输层熟知端口号5. TCP协议对比UDP协议6. TCP的流量控制7. TCP的拥塞控制7.1 慢开始算法、拥塞避免算法7.2 快重传算法7.3 快恢复算法 8. TCP超时重传时间的选择8.1 超时重传时间计算 9. TCP可靠传输…

Linux中ssh登陆慢的两种原因

useDNS配置导致登陆慢 如果ssh server的配置文件(通常是 /etc/ssh/sshd_config )中设置 useDNS yes ,可能会导致 ssh 登陆卡住几十秒。将该配置项设为 no,然后重启 ssh 服务,再次登陆就恢复正常。将useDND配置为yes会…

Camtasia Studio 2023 最新中文版,camtasiaStudio如何添加背景音乐

Camtasia2023的视频编辑工具可以帮助用户剪辑、裁剪、旋转、调整大小、添加特效、混合音频等。用户还可以使用Camtasia2023的字幕功能添加字幕和注释,以及使用其内置的特效和转场来提高视频的视觉效果。 Camtasia Studio 2023新功能介绍 的光标增强 由于光标在屏幕…

容器化背后的魔法之Docker底层逻辑解密

Docker内部工作原理是怎样的? 现在我们知道了Docker是什么以及它提供了哪些好处,让我们逐个重要的细节来了解。 什么是容器?它们是如何工作的? 在深入研究Docker的内部机制之前,我们首先要了解容器的概念。简单地说…

解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct

这一章我们聊聊指令微调,指令微调和前3章介绍的prompt有什么关系呢?哈哈只要你细品,你就会发现大家对prompt和instruction的定义存在些出入,部分认为instruction是prompt的子集,部分认为instruction是句子类型的prompt…

前端下载PDF内容空白且大小偏大问题解决

前端使用React框架axios请求后端接口下载文件,请求返回正常但文件大小和内容异常。经排查,其原因是使用了mockjs用作数据模拟,导致了请求异常,将其注释掉后,文件大小与内容恢复正常。 目录 1.文件异常 2.定位问题 3…

idea-控制台输出乱码问题

idea-控制台输出乱码问题 现象描述: 今天在进行IDEA开发WEB工程调式的时候控制台日志输出了乱码,如下截图 其实开发者大多都知道乱码是 编码不一致导致的,但是有时候就是不知到哪些地方不一致,今天我碰到的情况可能和你的不相同…

CSS整段文字缩进(一段多行文字中首列位置相对应)

<style>p {text-align: justify;padding-left: 2em;} </style>

二叉树的三序遍历

今天不看算法了&#xff0c;刷刷题换换脑子。 参考教程&#xff1a; 代码随想录 文章目录 二叉树的遍历方式二叉树的递归遍历前序遍历中序遍历后序遍历 二叉树的迭代遍历前序遍历中序遍历后序遍历 按遍历顺序构造二叉树从中序与后序构造二叉树。从前序与中序构造二叉树。 二叉…