在编译好VTK自带的例程Examples\GUI\Qt\GraphicsView后,开始运行程序,会发现程序会马上崩溃,上网查到的解释是:
The problem was in GraphicsView.hpp. This pointer was missing
mWidget = new QVTKWidget2(mCtx, this);
按照上述方法修改程序后,程序能正常运行。
原帖见:http://vtk.1045678.n5.nabble.com/VTk-Examples-GUI-Qt-GraphicsView-crashed-on-win7-td5602763.html
另外附上CMakeLists.txt文件,原始的文件不知道为什么不行。
cmake_minimum_required(VERSION 2.6)
PROJECT(Qtgraphicsview)
IF(NOT VTK_BINARY_DIR)
FIND_PACKAGE(VTK)
IF(NOT VTK_DIR)
MESSAGE(FATAL_ERROR "Please set VTK_DIR.")
ENDIF(NOT VTK_DIR)
INCLUDE(${VTK_USE_FILE})
ENDIF(NOT VTK_BINARY_DIR)
# use what QVTK built with
SET(QT_QMAKE_EXECUTABLE ${VTK_QT_QMAKE_EXECUTABLE} CACHE FILEPATH "")
SET(QT_MOC_EXECUTABLE ${VTK_QT_MOC_EXECUTABLE} CACHE FILEPATH "")
SET(QT_UIC_EXECUTABLE ${VTK_QT_UIC_EXECUTABLE} CACHE FILEPATH "")
FIND_PACKAGE(Qt4)
SET(QT_USE_QTOPENGL 1)
SET(QT_USE_QTWEBKIT 1)
IF(QT_USE_FILE)
INCLUDE(${QT_USE_FILE})
ELSE(QT_USE_FILE)
SET(QT_LIBRARIES ${QT_QT_LIBRARY})
ENDIF(QT_USE_FILE)
# Set your files and resources here
SET(QtgraphicsviewSrcs main.cpp
OpenGLScene.cpp
TreeRingViewItem.cpp
GraphLayoutViewItem.cpp
WebView.cpp)
#SET(QtgraphicsviewUI Qtgraphicsview.ui)
SET(QtgraphicsviewHeaders OpenGLScene.hpp
QBoolAnimation.h
WebView.h)
SET(QtgraphicsviewResources Data/GraphicsView.qrc)
# The rest should just work (sure...)
#QT4_WRAP_UI(UISrcs ${QtgraphicsviewUI})
QT4_WRAP_CPP(MOCSrcs ${QtgraphicsviewHeaders} )
QT4_ADD_RESOURCES(ResourceSrcs ${QtgraphicsviewResources})
SOURCE_GROUP("Resources" FILES
${QtgraphicsviewResources}
${EXE_ICON}
)
SOURCE_GROUP("Generated" FILES
${MOCSrcs}
${ResourceSrcs}
${RCS_SOURCES}
)
ADD_DEFINITIONS(-DQT_GUI_LIBS -DQT_CORE_LIB -DQT3_SUPPORT)
SET_SOURCE_FILES_PROPERTIES(${QtgraphicsviewSrcs} PROPERTIES
OBJECT_DEPENDS "${UISrcs}")
# It's nice to have the ui in the windows project file...just double click on it
# and designer comes up on that ui file :)
IF (${CMAKE_BUILD_TOOL} MATCHES "msdev")
SET (QtgraphicsviewSrcs ${QtgraphicsviewSrcs})
ENDIF (${CMAKE_BUILD_TOOL} MATCHES "msdev")
IF (${CMAKE_BUILD_TOOL} MATCHES "devenv")
SET (QtgraphicsviewSrcs ${QtgraphicsviewSrcs})
ENDIF (${CMAKE_BUILD_TOOL} MATCHES "devenv")
ADD_EXECUTABLE( Qtgraphicsview MACOSX_BUNDLE ${QtgraphicsviewSrcs} ${MOCSrcs} ${ResourceSrcs})
TARGET_LINK_LIBRARIES( Qtgraphicsview
QVTK
${QT_LIBRARIES}
vtkRendering
vtkGraphics
vtkIO
vtkCommon
vtkInfovis
vtkViews
)
编译CMake文件还会遇到下面的问题,至于为什么,我也不清楚,我的解决方法是删除掉CMake文件中的几句代码:if(NOT VTK_USE_QVTK_QTOPENGL OR NOT QT_QTWEBKIT_FOUND OR QT_VERSION_MINOR LESS 6)
message(STATUS "VTK isn't configured to use QtOpenGL, QtWebKit wasn't found, or Qt 4.6 wasn't found. GraphicsView example is disabled.")
else(NOT VTK_USE_QVTK_QTOPENGL OR NOT QT_QTWEBKIT_FOUND OR QT_VERSION_MINOR LESS 6)
遇到的问题:VTK isn't configured to use QtOpenGL, QtWebKit wasn't found, or Qt 4.6 wasn't found.
转载于:https://blog.51cto.com/2845385/1048580