跳转至

vtk各渲染窗口区别

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

更正 :包含 QVTKOpenGLWidget 的 VTK 的第一个版本是VTK 8.0.0!!!


1 QVTKxxxWidget 如何使用

每个 widget 都提供了不同的功能以及不同的 API,但是 widget 的创建以及使用基本一样。

  1. 实例化widget
  2. 指定渲染窗口交互器
  3. 创建回调函数(qt里就直接绑定信号和槽)
  4. 创建模型,并与widget关联
  5. 激活widget
  6. 反激活widget

2 QVTKxxxWidget 的关系

介绍
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 渲染快、效果好,使用基本一样。

Qt5.4 以后引入 QVTKOpenGLWidget/QVTKOpenGLWidget

vtk 8.2.X 以后引入 QVTKOpenGLNativeWidget

3 使用那个 QVTKxxxWidget

_放弃使用 QVTKWidget。 包含 QVTKOpenGLWidget 的VTK的第一个版本是 VTK 8.0.0! 如果你是 Qt5.4 以前,使用 QVTKWidget2。 如果你是 Qt5.4 以后,vtk8.1X 及以前 请使用 QVTKOpenGLWidget。 如果你是 Qt5.4 以后,vtk8.2X 使用 QVTKOpenGLNativeWidget。

4 找不到QVTKOpenGLWidget/QVTKOpenGLNativeWidget

5 Qt Design 里拖动 QVTKxxxWidget

官方仅提供QVTKWidget,需要手动放到qt design下的plugin里。

放弃在 Design 里拖动,直接拖动 QWidget 然后继承,非要搞也是自己去封装自定义控件。