VTK: QVTKOpenGLWindow Class Reference

| VTK 9.3.1

Signals | Public Member Functions | Static Public Member Functions | Protected Slots | Protected Member Functions | Protected Attributes | Friends | List of all members
QVTKOpenGLWindow Class Reference

display a vtkGenericOpenGLRenderWindow in a Qt QOpenGLWindow. More...

`#include <QVTKOpenGLWindow.h>`

Inherits QOpenGLWindow.

Collaboration diagram for QVTKOpenGLWindow:
[legend]

## Signals
void | windowEvent (QEvent *e)
| Signal emitted when any event has been receive, with the corresponding event as argument. More...

## Public Member Functions
| QVTKOpenGLWindow (QOpenGLWindow::UpdateBehavior updateBehavior=NoPartialUpdate, QWindow *parent=nullptr)
| QVTKOpenGLWindow (QOpenGLContext *shareContext, QOpenGLWindow::UpdateBehavior updateBehavior=NoPartialUpdate, QWindow *parent=nullptr)
| QVTKOpenGLWindow (vtkGenericOpenGLRenderWindow *renderWindow, QOpenGLWindow::UpdateBehavior updateBehavior=NoPartialUpdate, QWindow *parent=nullptr)
| QVTKOpenGLWindow (vtkGenericOpenGLRenderWindow *renderWindow, QOpenGLContext *shareContext, QOpenGLWindow::UpdateBehavior updateBehavior=NoPartialUpdate, QWindow *parent=nullptr)
| ~QVTKOpenGLWindow () override
vtkRenderWindow * | renderWindow () const
| Returns the render window that is being shown in this widget. More...
QVTKInteractor * | interactor () const
| Get the QVTKInteractor that was either created by default or set by the user. More...
void | setRenderWindow (vtkGenericOpenGLRenderWindow *win)
| Set a render window to use. More...
void | setRenderWindow (vtkRenderWindow *win)
| Set a render window to use. More...
void | setEnableHiDPI (bool enable)
| Enable or disable support for HiDPI displays. More...
bool | enableHiDPI () const
| Enable or disable support for HiDPI displays. More...
void | setUnscaledDPI (int)
| Set/Get unscaled DPI value. More...
int | unscaledDPI () const
| Set/Get unscaled DPI value. More...
void | setCustomDevicePixelRatio (double cdpr)
| Set/Get a custom device pixel ratio to use to map Qt sizes to VTK (or OpenGL) sizes. More...
double | customDevicePixelRatio () const
| Set/Get a custom device pixel ratio to use to map Qt sizes to VTK (or OpenGL) sizes. More...
double | effectiveDevicePixelRatio () const
| Set/Get a custom device pixel ratio to use to map Qt sizes to VTK (or OpenGL) sizes. More...
void | setDefaultCursor (const QCursor &cursor)
| Set/get the default cursor to use for this widget. More...
const QCursor & | defaultCursor () const
| Set/get the default cursor to use for this widget. More...

## Static Public Member Functions
static QSurfaceFormat | defaultFormat (bool stereo_capable=false)
| Returns a QSurfaceFormat suitable for surfaces that intend to be used for VTK rendering. More...

## Protected Slots
void | cleanupContext ()
| Called as a response to `QOpenGLContext::aboutToBeDestroyed`. More...
void | updateSize ()

## Protected Member Functions
bool | event (QEvent *evt) override
void | initializeGL () override
void | paintGL () override
void | resizeGL (int w, int h) override

## Protected Attributes
vtkSmartPointer< vtkGenericOpenGLRenderWindow > | RenderWindow
QScopedPointer< QVTKRenderWindowAdapter > | RenderWindowAdapter

## Friends
class | QVTKOpenGLStereoWidget
| QVTKOpenGLStereoWidget is given friendship so it can call `cleanupContext` in its destructor to ensure that OpenGL state is proporly cleaned up before the widget goes away. More...

## Detailed Description

display a vtkGenericOpenGLRenderWindow in a Qt QOpenGLWindow.

QVTKOpenGLWindow is one of the mechanisms for displaying VTK rendering results in a Qt application. QVTKOpenGLWindow extends QOpenGLWindow to display the rendering results of a vtkGenericOpenGLRenderWindow.

Since QVTKOpenGLWindow is based on QOpenGLWindow it is intended for rendering in a top-level window. QVTKOpenGLWindow can be embedded in a another QWidget using `QWidget::createWindowContainer` or by using QVTKOpenGLStereoWidget instead. However, developers are encouraged to check Qt documentation for `QWidget::createWindowContainer` idiosyncrasies. Using QVTKOpenGLNativeWidget instead is generally a better choice for causes where you want to embed VTK rendering results in a QWidget. QVTKOpenGLWindow or QVTKOpenGLStereoWidget is still preferred for applications that want to support quad-buffer based stereo rendering.

To request a specific configuration for the context, use `QWindow::setFormat()` like for any other QWindow. This allows, among others, requesting a given OpenGL version and profile. Use `QOpenGLWindow::defaultFormat()` to obtain a QSurfaceFormat with appropriate OpenGL version configuration. To enable quad-buffer stereo, you'll need to call `QSurfaceFormat::setStereo(true)`.

VTK Rendering features like multi-sampling, double buffering etc. are enabled/disabled by directly setting the corresponding attributes on vtkGenericOpenGLRenderWindow and not when specifying the OpenGL context format in `setFormat`. If not specified, then `QSurfaceFormat::defaultFormat` will be used.

Note
  QVTKOpenGLWindow requires Qt version 5.9 and above.

See also
  QVTKOpenGLStereoWidget QVTKOpenGLNativeWidget

Definition at line 54 of file QVTKOpenGLWindow.h.

## Constructor & Destructor Documentation

## ◆ QVTKOpenGLWindow() [1/4]

QVTKOpenGLWindow::QVTKOpenGLWindow | ( | QOpenGLWindow::UpdateBehavior | updateBehavior = `NoPartialUpdate`,
|  | QWindow * | parent = `nullptr`
| ) |  |

## ◆ QVTKOpenGLWindow() [2/4]

QVTKOpenGLWindow::QVTKOpenGLWindow | ( | QOpenGLContext * | shareContext,
|  | QOpenGLWindow::UpdateBehavior | updateBehavior = `NoPartialUpdate`,
|  | QWindow * | parent = `nullptr`
| ) |  |

## ◆ QVTKOpenGLWindow() [3/4]

QVTKOpenGLWindow::QVTKOpenGLWindow | ( | vtkGenericOpenGLRenderWindow * | renderWindow,
|  | QOpenGLWindow::UpdateBehavior | updateBehavior = `NoPartialUpdate`,
|  | QWindow * | parent = `nullptr`
| ) |  |

## ◆ QVTKOpenGLWindow() [4/4]

QVTKOpenGLWindow::QVTKOpenGLWindow | ( | vtkGenericOpenGLRenderWindow * | renderWindow,
|  | QOpenGLContext * | shareContext,
|  | QOpenGLWindow::UpdateBehavior | updateBehavior = `NoPartialUpdate`,
|  | QWindow * | parent = `nullptr`
| ) |  |

## ◆ ~QVTKOpenGLWindow()

QVTKOpenGLWindow::~QVTKOpenGLWindow | ( |  | ) |
| override

## Member Function Documentation

## ◆ setRenderWindow() [1/2]

void QVTKOpenGLWindow::setRenderWindow | ( | vtkGenericOpenGLRenderWindow * | win | ) |

Set a render window to use.

It a render window was already set, it will be finalized and all of its OpenGL resource released. If the `win` is non-null and it has no interactor set, then a QVTKInteractor instance will be created as set on the render window as the interactor.

## ◆ setRenderWindow() [2/2]

void QVTKOpenGLWindow::setRenderWindow | ( | vtkRenderWindow * | win | ) |

Set a render window to use.

It a render window was already set, it will be finalized and all of its OpenGL resource released. If the `win` is non-null and it has no interactor set, then a QVTKInteractor instance will be created as set on the render window as the interactor.

## ◆ renderWindow()

vtkRenderWindow* QVTKOpenGLWindow::renderWindow | ( |  | ) | const

Returns the render window that is being shown in this widget.

## ◆ interactor()

QVTKInteractor* QVTKOpenGLWindow::interactor | ( |  | ) | const

Get the QVTKInteractor that was either created by default or set by the user.

## ◆ defaultFormat()

static QSurfaceFormat QVTKOpenGLWindow::defaultFormat | ( | bool | stereo_capable = `false` | ) |
| static

Returns a QSurfaceFormat suitable for surfaces that intend to be used for VTK rendering.

If your applications plans on using `QVTKOpenGLNativeWidget`, then this format (or similar) must be set as the default format on QSurfaceFormat before any widgets are created.

Note this returns a QSurfaceFormat required to support the OpenGL rendering capabilities in a vtkRenderWindow. Whether those features, e.g. multi sampling, is actually used for rendering is determined by values specified on the vtkRenderWindow instance itself through appropriate API.

Passing `stereo_capable=true` is same as calling `QSurfaceFormat::setStereo(true)`. This is necessary if you want to use quad-buffer based stereo in your application.

Refer to Qt docs for QOpenGLWidget and QOpenGLWindow for appropriate locations in your application where to the format may be provided e.g. either on the instance of QOpenGLWindow or QOpenGLWidget subclasses or as default format for the application using `QSurfaceFormat::setDefaultFormat()`.

## ◆ setEnableHiDPI()

void QVTKOpenGLWindow::setEnableHiDPI | ( | bool | enable | ) |

Enable or disable support for HiDPI displays.

When enabled, this enabled DPI scaling i.e. `vtkWindow::SetDPI` will be called with a DPI value scaled by the device pixel ratio every time the widget is resized. The unscaled DPI value can be specified by using `setUnscaledDPI`.

## ◆ enableHiDPI()

bool QVTKOpenGLWindow::enableHiDPI | ( |  | ) | const
| inline

Enable or disable support for HiDPI displays.

When enabled, this enabled DPI scaling i.e. `vtkWindow::SetDPI` will be called with a DPI value scaled by the device pixel ratio every time the widget is resized. The unscaled DPI value can be specified by using `setUnscaledDPI`.

Definition at line 104 of file QVTKOpenGLWindow.h.

## ◆ setUnscaledDPI()

void QVTKOpenGLWindow::setUnscaledDPI | ( | int |  | ) |

Set/Get unscaled DPI value.

Defaults to 72, which is also the default value in vtkWindow.

## ◆ unscaledDPI()

int QVTKOpenGLWindow::unscaledDPI | ( |  | ) | const
| inline

Set/Get unscaled DPI value.

Defaults to 72, which is also the default value in vtkWindow.

Definition at line 113 of file QVTKOpenGLWindow.h.

## ◆ setCustomDevicePixelRatio()

void QVTKOpenGLWindow::setCustomDevicePixelRatio | ( | double | cdpr | ) |

Set/Get a custom device pixel ratio to use to map Qt sizes to VTK (or OpenGL) sizes.

Thus, when the QWidget is resized, it called `vtkRenderWindow::SetSize` on the internal vtkRenderWindow after multiplying the QWidget's size by this scale factor.

By default, this is set to 0. Which means that `devicePixelRatio` obtained from Qt will be used. Set this to a number greater than 0 to override this behaviour and use the custom scale factor instead.

`effectiveDevicePixelRatio` can be used to obtain the device-pixel-ratio that will be used given the value for customDevicePixelRatio.

## ◆ customDevicePixelRatio()

double QVTKOpenGLWindow::customDevicePixelRatio | ( |  | ) | const
| inline

Set/Get a custom device pixel ratio to use to map Qt sizes to VTK (or OpenGL) sizes.

Thus, when the QWidget is resized, it called `vtkRenderWindow::SetSize` on the internal vtkRenderWindow after multiplying the QWidget's size by this scale factor.

By default, this is set to 0. Which means that `devicePixelRatio` obtained from Qt will be used. Set this to a number greater than 0 to override this behaviour and use the custom scale factor instead.

`effectiveDevicePixelRatio` can be used to obtain the device-pixel-ratio that will be used given the value for customDevicePixelRatio.

Definition at line 131 of file QVTKOpenGLWindow.h.

## ◆ effectiveDevicePixelRatio()

double QVTKOpenGLWindow::effectiveDevicePixelRatio | ( |  | ) | const

Set/Get a custom device pixel ratio to use to map Qt sizes to VTK (or OpenGL) sizes.

Thus, when the QWidget is resized, it called `vtkRenderWindow::SetSize` on the internal vtkRenderWindow after multiplying the QWidget's size by this scale factor.

By default, this is set to 0. Which means that `devicePixelRatio` obtained from Qt will be used. Set this to a number greater than 0 to override this behaviour and use the custom scale factor instead.

`effectiveDevicePixelRatio` can be used to obtain the device-pixel-ratio that will be used given the value for customDevicePixelRatio.

## ◆ setDefaultCursor()

void QVTKOpenGLWindow::setDefaultCursor | ( | const QCursor & | cursor | ) |

Set/get the default cursor to use for this widget.

## ◆ defaultCursor()

const QCursor& QVTKOpenGLWindow::defaultCursor | ( |  | ) | const
| inline

Set/get the default cursor to use for this widget.

Definition at line 140 of file QVTKOpenGLWindow.h.

## ◆ windowEvent

void QVTKOpenGLWindow::windowEvent | ( | QEvent * | e | ) |
| signal

Signal emitted when any event has been receive, with the corresponding event as argument.

## ◆ cleanupContext

void QVTKOpenGLWindow::cleanupContext | ( |  | ) |
| protectedslot

Called as a response to `QOpenGLContext::aboutToBeDestroyed`.

This may be called anytime during the widget lifecycle. We need to release any OpenGL resources allocated in VTK work in this method.

## ◆ updateSize

void QVTKOpenGLWindow::updateSize | ( |  | ) |
| protectedslot

## ◆ event()

bool QVTKOpenGLWindow::event | ( | QEvent * | evt | ) |
| overrideprotected

## ◆ initializeGL()

void QVTKOpenGLWindow::initializeGL | ( |  | ) |
| overrideprotected

## ◆ paintGL()

void QVTKOpenGLWindow::paintGL | ( |  | ) |
| overrideprotected

## ◆ resizeGL()

void QVTKOpenGLWindow::resizeGL | ( | int | w,
|  | int | h
| ) |  |
| overrideprotected

## Friends And Related Function Documentation

## ◆ QVTKOpenGLStereoWidget

friend class QVTKOpenGLStereoWidget
| friend

QVTKOpenGLStereoWidget is given friendship so it can call `cleanupContext` in its destructor to ensure that OpenGL state is proporly cleaned up before the widget goes away.

Definition at line 165 of file QVTKOpenGLWindow.h.

## Member Data Documentation

## ◆ RenderWindow

vtkSmartPointer<vtkGenericOpenGLRenderWindow> QVTKOpenGLWindow::RenderWindow
| protected

Definition at line 173 of file QVTKOpenGLWindow.h.

## ◆ RenderWindowAdapter

QScopedPointer<QVTKRenderWindowAdapter> QVTKOpenGLWindow::RenderWindowAdapter
| protected

Definition at line 174 of file QVTKOpenGLWindow.h.

The documentation for this class was generated from the following file:

- GUISupport/Qt/QVTKOpenGLWindow.h