在编译好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.