VTK之基于Qt的VTK应用程序

QT5+VTK9.1最新配置方法 VS2019+QT+VTK 9.1 最新正确结合方法 阅读详情

友好的用户图形界面是应用程序必须的因素之一,对于VTK应用程序也是如此。VTK附带的程序示例大多数是基于控制台的,但是VTK也可以与很多流行的GUI开发工具整合。本文介绍如何把VTK(7.1.0)和GUI开发工具Qt(5.x)进行整合。

VTK之基于Qt的VTK应用程序

Qt是跨平台的GUI开发工具,VTK也提供了大量的类支持Qt。VTK工程是用CMake进行管理的,而Qt自身有qmake工具。对于一些规模较小的Qt工程而言,用qmake来构建工程确实很方便,但是随着工程复杂度的增加或者当所开发的工程依赖于其他函数库时,使用CMake来管理工程是一个明智的选择。

用CMake管理Qt工程

下图是Qt编译系统:

这里写图片描述

用CMake来管理 Qt工程的CMakeLists脚本程序:

#----------------------------------------------
# 下面这两行,没什么好解释的
cmake_minimum_required( VERSION 2.8 )
project( YourProjectName )

#----------------------------------------------
# 下面这两行,也没什么好解释的
find_package( Qt5Widgets REQUIRED )
include( ${QT_USE_FILE} )

#----------------------------------------------
# 程序所有源文件。<TODO:在此处添加源文件>
# 定义变量Project_SRCS,其值为所列的文件列表
SET( Project_SRCS
    main.cpp
  )

#----------------------------------------------
# 程序所有UI文件。<TODO:在此处添加UI文件>
# 定义变量Project_UIS,其值为所列的文件列表
SET( Project_UIS
    YourQtWindows.ui
)

#----------------------------------------------
# 所有包含Q_OBJECT的头文件。<TODO:在此处添加头文件>
# 定义变量Project_MOC_HDRS,其值为所列的文件列表
SET( Project_MOC_HDRS
    YourQtProjectFiles.h
)

#-----------------------------------------------
# 通过Qt的uic.exe生成UI文件对应的ui_XXXX.h文件
# 将生成的ui_XXXX.h文件放在变量Project_UIS_H里,
# QT5_WRAP_UI就是干这个事情。
QT5_WRAP_UI( Project_UIS_H ${Project_UIS} )

#-----------------------------------------------
# 通过Qt的moc.exe生成包含Q_OBJECT的头文件对应的
# moc_XXXX.cxx文件,将生成的moc_XXXX.cxx文件放在
# 变量Project_MOC_SRCS里。QT5_WRAP_CPP就是干这个事情。
QT5_WRAP_CPP( Project_MOC_SRCS ${Project_MOC_HDRS} )

#-----------------------------------------------
# Qt的MOC和UIC程序生成的moc_XXXX.cxx和ui_XXXX.h
# 等文件是存放在CMake的“Where to build the binaries"
# 里指定的目录里,所以必须都这些路径包含进来。
INCLUDE_DIRECTORIES( ${Project_SOURCE_DIR}
                     ${CMAKE_CURRENT_BINARY_DIR}
                   )

#-----------------------------------------------                          
# Qt程序如果有资源文件(*.qrc),要包含资源文件,
# 然后用Qt的rcc.exe生成相应的qrc_XXXX.cpp文件。
# QT5_ADD_RESOURCES就是干这个事情。
SET( Project_RCCS YourProject.qrc)
QT5_ADD_RESOURCES( Project_RCC_SRCS ${Project_RCCS})

#-----------------------------------------------
# 根据程序的cpp文件、头文件以及中间生成的ui_XXXX.h、
# moc_XXXX.cxx、qrc_XXXX.cxx等生成可执行文件,并链接
# Qt的动态库(Qt的动态库都定义在QT_LIBRARIES变量里了)
ADD_EXECUTABLE( YourProjectName
                ${Project_SRCS}
                ${Project_UIS_H}
                ${Project_MOC_SRCS}
                ${Project_RCC_SRCS}                           
              )
TARGET_LINK_LIBRARIES ( YourProjectName  ${Qt5Widgets_LIBRARIES} )

在Qt Designer里继承QVTKWidget控件

要实现QVTKWidget在Qt Designer里像Qt的其他标准控件的拖拽功能,需要将VTK中编译(必须是Release)生成的QVTKWidgetPlugin.dll和QVTKWidgetPlugin.lib复制到Qt安装目录中的plugins\designer下。复制完成后,Qt Designer界面如下图所示。

这里写图片描述

示例演示

本例先用Qt Designer生成ui文件,再整合VTK生成CT数据浏览器。

CMakeLists.txt代码

CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
PROJECT( Qt )

#----------------------------------------------------------------------------------
FIND_PACKAGE( VTK REQUIRED )
FIND_PACKAGE( Qt5Widgets REQUIRED )

INCLUDE( ${VTK_USE_FILE} )


#----------------------------------------------------------------------------------
SET( PROJECT_SRCS
    main.cpp
    ProjectMainWindow.cpp
    )

SET( PROJECT_UIS
    ProjectMainWindow.ui
)

SET( PROJECT_MOC_HDRS
  ProjectMainWindow.h
)

#----------------------------------------------------------------------------------
QT5_WRAP_UI( PROJECT_UIS_H 
             ${PROJECT_UIS}
           )

QT5_WRAP_CPP( PROJECT_MOC_SRCS 
              ${PROJECT_MOC_HDRS}
            )

#----------------------------------------------------------------------------------
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR} 
                     ${CMAKE_CURRENT_BINARY_DIR} 
                     ${VTK_DIR} 
                   )

ADD_EXECUTABLE( Qt 
                ${PROJECT_SRCS} 
                ${PROJECT_UIS_H} 
                ${PROJECT_MOC_SRCS} 
              )

TARGET_LINK_LIBRARIES ( Qt
  ${VTK_LIBRARIES}
  ${Qt5Widgets_LIBRARIES} 
  )

#-----------------------------------------------------------------------------------------------------------------------------------
# Construct a list of paths containing runtime 
# directories for project applications on Windows
SET(PROJECT_RUNTIME_PATH 
    "${VTK_LIBRARY_DIRS}/@VS_BUILD_TYPE@;${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/@VS_BUILD_TYPE@"
    )
IF(QT5_FOUND)
  SET(PROJECT_RUNTIME_PATH "${PROJECT_RUNTIME_PATH};${QT_LIBRARY_DIR}/../bin")
ENDIF()

INCLUDE(CreateWindowsBatchScript.cmake)

# If we are under Windows, create two batch files which correctly
# set up the environment for the application and for Visual Studio
IF(WIN32)
  SET(VS_SOLUTION_FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.sln")
  FOREACH(VS_BUILD_TYPE debug release)
    CreateWindowsBatchScript("${CMAKE_SOURCE_DIR}/StartVS.bat.in"
      ${PROJECT_BINARY_DIR}/StartVS_${VS_BUILD_TYPE}.bat
      ${VS_BUILD_TYPE})
  ENDFOREACH()
ENDIF(WIN32)

运行结果:

这里写图片描述

源代码下载,下载后用CMake编译一下即可运行。

测试数据:链接:https://pan.baidu.com/s/1R6fax_CuMM6PMeRgiXWNXA 提取码:abii

QT 基于VTK编写STL三维显示程序 基于QT,C++,VTK编写一个读取stl文件并显示的界面应用程序 阅读详情

相关推荐

linux环境下打包c++的Qt应用程序装载vtk和itk(cmake方式)

linux环境下打包c++的Qt应用程序装载vtk和itk(cmake方式)

CEVERY的博客 1076

【基础篇】Qt+VTK开发环境搭建

VTK网站有大量的程序示例,可以通过手敲代码的形式进行学习。下面就开始使用Qt来完成所有示例。

m0_58087444的博客 7630

QT和VTK的结合开发:可视化应用的强大组合

VTK提供了丰富的算法和工具,用于处理和可视化科学数据,如体数据、网格数据等。QT提供了丰富的工具和组件,用于构建用户界面,而VTK提供了丰富的算法和工具,用于处理和可视化科学数据。QT是一个跨平台的C++应用程序开发框架,它提供了丰富的工具和组件,用于开发各种类型的应用程序,包括图形用户界面(GUI)应用程序。通过结合使用QT和VTK,开发人员可以利用QT的丰富功能和用户界面控件,以及VTK强大的数据处理和可视化能力,创建出交互性和可视化效果都很好的应用程序。三、QT和VTK的结合。

CnyhCode的博客 3064

【转】VTK与Qt整合的示例

VTK与Qt整合的示例 VTK附带的程序示例中大多是基于控制台的,作为可视化开发工具包,VTK也可以与很多流行的GUI开发工具整合,比如MFC、Qt(题外话:Qt已经被Digia从诺基亚手中收购了,Qt现在的链接是:http://qt-project.org/,也有已经编译好的版本:http://code.google.com/p/qt-msvc-installer/downloads/list直接下载安装。可能因为大学课程里会教授MFC的内容,一些非计算机专业的会偏向于采用MFC,个人觉得,对于非计算.

sinolover的专栏 5508

基于Qt的VTK应用程序开发

而Qt则是一个跨平台的C++应用程序开发框架,提供了丰富的GUI组件和工具,使得开发人员可以方便地创建功能强大的图形界面应用程序。本文将介绍如何结合使用Qt和VTK,开发一个基于Qt的VTK应用程序,并提供相应的源代码示例。在上述示例中,我们首先创建了一个QVTKWidget作为VTK场景的渲染窗口,并创建了一个VTK渲染器和渲染窗口。然后,我们创建了一个VTK球体源,并将其连接到一个VTK多边形数据映射器和演员中。以上示例仅仅是一个简单的演示,你可以根据自己的需求进行更复杂的VTK场景构建和交互操作。

WbhsOcaml的博客 561

使用VTK、QT和Ubuntu构建可视化应用程序

VTK是一种开源的可视化工具包,用于创建各种各样的可视化应用程序。Qt是一个跨平台的应用程序开发框架,提供了丰富的GUI组件和工具,方便开发人员构建用户友好的界面。QT是一个跨平台的应用程序开发框架,它提供了丰富的GUI组件和工具,方便开发人员构建用户友好的界面。现在,我们已经创建了一个简单的QT应用程序框架,并将VTK的渲染窗口添加到了主窗口中。现在,我们已经创建了一个简单的Qt应用程序框架,并将VTK的渲染窗口添加到了主窗口中。这将安装VTK和QT的开发包,以便我们可以在应用程序中使用它们的功能和库。

VipeNvml的博客 406

基于VTK的Qt应用程序开发

VTK附带的程序示例中大多是基于控制台的,作为可视化开发工具包,VTK也可以与很多流行的GUI开发工具整合,比如MFC、Qt(题外话:Qt已经被Digia从诺基亚手中收购了,Qt现在的链接是:http://qt-project.org/,也有已经编译好的版本:http://code.google.com/p/qt-msvc-installer/downloads/list直接下载安装。可能因为大学

东灵工作室 4万+

使用Ubuntu安装PCL、QT和VTK

在本文中,我们将详细介绍如何在Ubuntu操作系统上安装PCL(点云库)、QT(跨平台应用程序开发框架)和VTK(可视化工具包)。下面是安装步骤和相应的源代码。QT是一个跨平台的应用程序开发框架,提供了丰富的GUI(图形用户界面)开发功能。现在,您已经成功安装了PCL、QT和VTK。接下来,您可以使用这些库开发和处理点云数据,并创建令人惊叹的可视化效果。VTK是一个用于可视化的开源工具包,可用于创建、呈现和处理复杂的3D图形。解压下载的VTK源代码,并导航到解压后的目录。按照安装向导的指示完成QT的安装。

LdjyHtml的博客 1162

使用qt应用程序的框架和VTK加载显示DICOM图像

【代码】使用qt应用程序的框架和VTK加载显示DICOM图像。

m0_46146920的博客 692

VTK与Qt整合的可视化应用程序开发指南

VTK支持多种事件类型,例如等,这些事件类型可以被绑定到相应的事件处理函数上。例如,当用户按下键盘的某个键时,将被触发,并执行绑定到该事件的函数。if (iren->GetKeyCode() == 'q') { // 当按下'q'键时退出程序在上述代码中,OnKeyPress函数被用作处理键盘按键事件,如果按下的是’q’键,则触发退出程序的操作。

weixin_33622085的博客 549

QuickVtk:基于QtQuickQML的VTK原型应用程序

QuickVtk 具有嵌入式支持的实时解释器 1.概述 QuickVtk是一个实时交互程序,具有对 -Framework的内置支持。 您可以通过声明性的方式访问来简单地学习或测试代码,并在2D / 3D可视化领域中开发原型。 一句话:QuickVtk的主要目的是通过使用引擎启用的React式编程。 嵌入式编辑器允许您加载,编辑和编译代码。 错误将直接显示在UI中,而嵌入式类型浏览器可快速概述QuickVtk中给定类型的所有不同属性,方法和其他信息。 2.屏幕截图 不同的屏幕截图展示了QuickVtk的一些主要功能,例如3D体积渲染,2D图像处理操作以及网格滤镜 3.建造说明 有关如何在支持

VTK随笔十三:QT与VTK的交互

本文以VTK 读入一幅 JPG 图像,然后在 Qt 界面上使用 VTK 显示该图像为例,演示QT与VTK的交互。

u012959478的博客 3917

我的交叉验证翻车实录:从‘炼丹’到可靠评估,我是怎么用五折验证拯救我的图像分割模型的

本文分享了作者在医学图像分割模型评估中从失败到成功的实战经验。通过引入五折交叉验证方法,解决了传统数据划分的局限性,显著提升了模型评估的稳定性和泛化能力。文章详细介绍了Python实现、数据准备策略和训练流水线改造,为AI医疗影像分析提供了可靠的技术方案。

weixin_42625070的博客 271

基于Qt的VTK应用程序代码:三维可视化新篇章

基于Qt的VTK应用程序代码:三维可视化新篇章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发领域,三维可视化技术已成为许多行业不可或缺的工具。今天要推荐的这个开源项目——基于Qt的VTK应用程序代码,正是为开发者提供了一种高效创建三维可视化应用程序的方法。项目利用了Qt框架的图形用户界面元素与VTK的三维可视化能力,让开发者能够在Qt环境下构建出既美观...

gitblog_06776的博客 1097

C#与发那科机器人通信实战:从SDK配置到机械臂控制

本文详细介绍了如何使用C#与发那科机器人进行通信,从SDK配置到机械臂控制的完整实战流程。内容包括环境准备、通信连接建立、机械臂运动控制、异常处理与状态监控,以及高级功能实战,帮助开发者快速掌握工业机器人编程技术。

weixin_42524276的博客 459

量化交易新手入门:从零开始搭建你的第一个Python交易策略(附完整代码)

本文为量化交易新手提供从零开始搭建Python双均线策略的完整指南,涵盖环境配置、数据获取、策略实现及风险管理等关键步骤。通过详细的代码示例和实践建议,帮助读者快速掌握量化交易的核心技术,并避免常见陷阱。文章特别强调Python在量化交易中的技术革新优势,适合希望进入金融科技领域的初学者。

weixin_26905487的博客 443

linux环境下打包c++的Qt应用程序装载vtk和itk(qmake方式)

linux环境下打包c++的Qt应用程序并装载vtk

CEVERY的博客 1625

REST-meta-MDD Data总结

sMRI数据使用:nwc1、nwc2、nwc3(同样数据集相关论坛中有相关信息指向需要使用wc1、wc2、wc3)多方咨询与讨论后决定使用nwc数据,这里说明wc数据相对wc数据要大的多如wc1的大小为1.33GB,而nwc1的数据却有6.90GB。VBM文件:/REST-meta-MDD/Sharing/REST-meta-MDD-VBM- phase1 -Sharing.tar.gz。1、Excel中的表型信息:1-男,2-女;-9999或空白表示缺少数据。

2404_88295660的博客 1539

VTK

 http://blog.youkuaiyun.com/wanhongluli/article/details/77852843 VTK Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转

lifeissmile的专栏 785

Matlab图像地图上的最短路径计算算法——Dijkstra算法

接下来,我们进入主循环,不断从优先队列中取出距离最小的节点,并更新其邻居节点的距离和路径。Dijkstra算法是一种常用的最短路径算法,本文将介绍如何使用Matlab实现Dijkstra算法来计算图像地图上的最短路径。为了使用上述算法,我们需要将图像地图转换为一个矩阵,并将可通行的区域设置为白色(或其他亮度值),障碍物区域设置为黑色(或其他暗度值)。然后,我们可以指定起始节点和终止节点,并调用。通过上述的代码实现,我们可以在Matlab中使用Dijkstra算法来计算图像地图上的最短路径。

2301_78484069的博客 2044

流媒体服务软件-LiveNVR channeltree 未授权访问

LiveNVR 能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机 IPCamera、NVR 等具有 RTSP/Onvif 协议输出的设备接入到 LiveNVR,LiveNVR 能够将这些设备源的音/视频数据进行采集、转换、输出,进行全平台终端直播(PC、Android、iOS、微信、H5),并且LiveNVR能够将视频源的直播数据对接到第三方 CDN 网络,实现安防设备互联网级别的直播分发。对channeltree接口加上权限校验。直接访问接口即可获取数据。

iSee857的博客 1040
上一篇: 设计模式之命令模式
下一篇: VTK图像处理之访问图像像素值
暮-成-雪
博客等级 码龄12年 5328粉丝 319原创
评论 33
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值