Study-VTK:QVTKWidget、QVTKOpenGLWidget、QVTKOpenGLNativeWidget、QVTKWidget2 区别

  网上很多案例使用qt+vtk的时候用QVTKWidget、QVTKWidget2、QVTKOpenGLWidget、QVTKOpenGLNativeWidget,比较懵逼。

QVTKWidget、QVTKOpenGLWidget、QVTKOpenGLNativeWidget、QVTKWidget2 区别

      • 这几个widget怎么使用
      • 这几个widget的关系
      • 到底应该用那个widget
      • 为什么自己用时候还要保留vtk8.1X
      • 如果找不到QVTKOpenGLWidget/QVTKOpenGLNativeWidget
      • Qt Design里拖动widget

这几个widget怎么使用

每个widget都提供了不同的功能以及不同的API,但是widget的创建以及使用基本一样。
    1)实例化widget
    2)指定渲染窗口交互器
    3)创建回调函数(qt里就直接绑定信号和槽)
    4)创建模型,并与widget关联
    5)激活widget
    6)反激活widget

这几个widget的关系

  这里梳理下他们的关系(仅是个人理解)。

使用介绍
QVTKWidget 用来在Qt的QWidget中显示 vtkRenderWindow
QVTKWidget2 用来在Qt的QGLWidget中显示 vtkRenderWindow
QVTKOpenGLWidget 用来在Qt的QWidget中显示 vtkRenderWindow
QVTKOpenGLNativeWidget 用来在Qt的QOpenGLWidget中显示 vtkGenericOpenGLRenderWindow

  QGLWidget、QOpenGLWidget类均继承自QWidget用于渲染OpenGL图形。
    QVTKWidget2比QVTKWidget渲染快、效果好,使用基本一样。
    QVTKOpenGLNativeWidget比QVTKOpenGLWidget渲染快、效果好,使用基本一样。
    QVTKOpenGLWidget比QVTKWidget渲染快、效果好,使用基本一样。
    QVTKOpenGLNativeWidget比QVTKWidget2渲染快、效果好,使用基本一样。

  版本分割线一:Qt版本
    Qt5.4以后版本官方建议使用QOpenGLWidget,但QGLWidget保留了下来。
    Qt5.4以前版本请使用QGLWidget。
  这导致vtkWidget这边应该这样使用:
    Qt5.4以后版本使用QVTKOpenGLWidget/QVTKOpenGLWidget。
    Qt5.4以前版本请使用QVTKWidget2/QVTKWidget。

  版本分割线二:Vtk版本
    vtk 8.1.X及以前 没有QVTKOpenGLNativeWidget
    vtk 8.2.X 增加QVTKOpenGLNativeWidget

到底应该用那个widget

  放弃使用QVTKWidget。
  如果你是Qt5.4以前,请使用QVTKWidget2。
  如果你是Qt5.4以后,vtk8.1X及以前 请使用QVTKOpenGLWidget。
  如果你是Qt5.4以后,vtk8.2X 请使用QVTKOpenGLNativeWidget。

比如你有QVTKWidget的程序,直接替换成QVTKWidget2(根据版本定),以此向后类推。

为什么自己用时候还要保留vtk8.1X

  为什么自己用时候还要保留vtk8.1X,因为vmtk官方说明仅支持vtk8.1X及以前,vtk8.2X不确定。虽然vtk8.2X+vmtk可以使用,但可能有隐藏bug。

如果找不到QVTKOpenGLWidget/QVTKOpenGLNativeWidget

  cmake注意下
Study-VTK:QVTKWidget、QVTKOpenGLWidget、QVTKOpenGLNativeWidget、QVTKWidget2 区别_第1张图片

Qt Design里拖动widget

  官方仅提供QVTKWidget,需要手动放到qt design下的plugin里。个人建议放弃在Design里拖动吧,直接拖动QWidget继承一下吧,非要搞也是自己去封装自定义控件。









  以上仅个人理解!!!有误请指正。







vtk学习教程
Study-VTK

你可能感兴趣的:(Study-,图形图像处理与显示)