Medical Imaging Interaction Toolkit  2025.08.99-f7084adb
Medical Imaging Interaction Toolkit
MxN Multi-Widget Concept

Introduction to the MxN View

The MxN MultiWidget View allows users to freely arrange as many render windows as they like in arbitrary arrangements. These windows are linked with each other in so-called "Synchronization Groups" (short: "Sync Groups") that share node-selections and -properties such as visibility and layer (i.e. the ordering which node is in front of which). For more detailed information on how to use it, take a look at The MxN Display help page. Here, we will give an overview of the most relevant classes for the MxN View.

Overview of MxN related classes

MxN Multi-Widget

The QmitkMxNMultiWidget is the main class for the MxN View, taking care of organizing the render windows and sync groups. It creates new render windows when necessary and extends them with a QmitkRenderWindowUtilityWidget, which it connects to for signals if the window's sync group changes. To offload the synchronization of different windows, it uses QmitkSynchronizedWidgetConnector, one for each sync group.

Utility Widget

Unlike in the standard 4-window-view, in the MxN View each QmitkRenderWindowWidget is extended with a QmitkRenderWindowUtilityWidget. This widget takes the form of a bar at the top of the render window, with features including:

When the sync group of a render window is changed, this signal will inform the MxN Multi-Widget of the change to handle the synchronization.

Synchronized Node Selection Widget

To select and modify the data shown in each render window, their Utility Widget contains a QmitkSynchronizedNodeSelectionWidget. In it, one can change the current selection of nodes, as well as their visibility and ordering. This state is synchronized with every other render window that is part of the same sync group, as specified in their utility widgets. Changes in the selection of nodes or their visibility are directly signalled from the QmitkSynchronizedNodeSelectionWidget, while changes in the node order (i.e. their layers) are emitted by the contained QmitkRenderWindowDataNodeTableModel. Each Synchronized Node Selection widget has exactly one data model that takes care of its selection and node properties.

Synchronized Widget Connector

A QmitkSynchronizedWidgetConnector takes care of synchronizing the widgets belonging to one sync group. New widgets can be added via QmitkSynchronizedWidgetConnector::ConnectWidget(const QmitkSynchronizedNodeSelectionWidget* nodeSelectionWidget) and removed via QmitkSynchronizedWidgetConnector::DisconnectWidget(const QmitkSynchronizedNodeSelectionWidget* nodeSelectionWidget). Connected QmitkSynchronizedNodeSelectionWidget will inform each other of changes to their node selections and their visibility / ordering. To get newly connected widgets up to date, the QmitkSynchronizedWidgetConnector internally saves the current selection and selection mode.