基于VTK的Qt应用程序开发

本文介绍了如何使用CMake管理Qt和VTK工程,包括CMakeLists.txt的编写,QVTKWidget在Qt Designer中的集成,以及读取图像并在Qt界面显示VTK。通过vtkEventQtSlotConnect实现VTK事件与Qt槽的绑定,解决动态链接库的加载问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VTK附带的程序示例中大多是基于控制台的,作为可视化开发工具包,VTK也可以与很多流行的GUI开发工具整合,比如MFC、Qt(题外话:Qt已经被Digia从诺基亚手中收购了,Qt现在的链接是: http://qt-project.org/,也有已经编译好的版本: http://code.google.com/p/qt-msvc-installer/downloads/list直接下载安装。可能因为大学课程里会教授MFC的内容,一些非计算机专业的会偏向于采用MFC,个人觉得,对于非计算机专业而言,如果一定要选择一种GUI工具做开发的话,建议用Qt,容易上手,学习周期短)、FLTK( http://www.fltk.org/,FLTK也是跨平台的,是一种比较轻便的GUI工具,VTK官方发布版本没有提供对FLTK的接口,但可以借助类 vtkFlRenderWindowInteractor,来实现VTK与FLTK的整合)等等,VTK的源码目录里(VTK-5.10\Examples\GUI)包含有VTK与Qt、MFC、Tcl等工具的整合。考虑到VTK对Qt的特殊照顾(VTK提供了很多针对Qt的类可以非常方便地与Qt整合),以及Qt自身的一些性质(如易用性、跨平台等),我们参考了VTK自带的一些例子,给出了VTK与Qt整合的详细步骤。

1.   CMakeLists.txt文件

我们已经知道了VTK工程的管理是用CMake的,而Qt自身有qmake工具,如果对于一些小工程而言,单纯的Qt程序用qmake来构建工程,确实很方便,但如果随着工程复杂度的增加以及工程依赖其他的函数库时,使用CMake来管理工程或许是一个明智的选择。而且随着你对CMake语法的了解,你会发现用CMake来管理工程是一件非常棒的事情。

我们先看看对于单纯的Qt工程,怎么来写CMakeLists.txt脚本文件。

1.1 用CMake来管理Qt工程

官方对于这个话题给出的解释在这里。我们引用一下这篇博文的图,然后给出每句CMakeLists.txt脚本的注释,结合这个图以及脚本的注释,相信你应该能明白了。

 

#----------------------------------------------
# 下面这两行,没什么好解释的
cmake_minimum_required( VERSION 2.8 )
project( YourProjectName )
 
#----------------------------------------------
# 下面这两行,也没什么好解释的
find_package( Qt4 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里,
# QT4_WRAP_UI就是干这个事情。
QT4_WRAP_UI( Project_UIS_H ${Project_UIS} )
 
#-----------------------------------------------
# 通过Qt的moc.exe生成包含Q_OBJECT的头文件对应的
# moc_XXXX.cxx文件,将生成的moc_XXXX.cxx文件放在
# 变量Project_MOC_SRCS里。QT4_WRAP_CPP就是干这个事情。
QT4_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}
                   )
 
#----------------------------------
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值