Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
QmitkDataStorageLayerStackModel Class Reference

Table model that displays the render window layer stack for a specific renderer. More...

#include <QmitkDataStorageLayerStackModel.h>

Inheritance diagram for QmitkDataStorageLayerStackModel:
Collaboration diagram for QmitkDataStorageLayerStackModel:

Public Member Functions

 QmitkDataStorageLayerStackModel (QObject *parent=nullptr)
 Construct the layer stack model. More...
 
void DataStorageChanged () override
 Called when the data storage has been changed. Refreshes the model data. More...
 
void NodePredicateChanged () override
 Called when the node predicate has been changed. Refreshes the model data. More...
 
void NodeAdded (const mitk::DataNode *node) override
 Called when a data node has been added to the data storage. More...
 
void NodeChanged (const mitk::DataNode *node) override
 Called when a data node has been changed. Refreshes the model data. More...
 
void NodeRemoved (const mitk::DataNode *node) override
 Called when a data node has been removed from the data storage. Refreshes the model data. More...
 
void SetCurrentRenderer (const std::string &rendererName)
 Set the current renderer by its name and refresh the layer stack. More...
 
mitk::BaseRenderer * GetCurrentRenderer () const
 Get the currently active base renderer. More...
 
QModelIndex index (int row, int column, const QModelIndex &parent) const
 Create a model index for the given row and column. More...
 
QModelIndex parent (const QModelIndex &child) const
 Return the parent index (always invalid, since this is a flat table model). More...
 
Qt::ItemFlags flags (const QModelIndex &index) const override
 Return item flags for the given index. More...
 
QVariant headerData (int section, Qt::Orientation orientation, int role) const override
 Return header data for the table. More...
 
int rowCount (const QModelIndex &parent=QModelIndex()) const override
 Return the number of rows (layers) in the model. More...
 
int columnCount (const QModelIndex &parent=QModelIndex()) const override
 Return the number of columns (always 2: visibility and node name). More...
 
QVariant data (const QModelIndex &index, int role) const override
 Return data for the given index and role. More...
 
bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
 Set data for the given index and role (visibility toggling). More...
 
- Public Member Functions inherited from QmitkAbstractDataStorageModel
 ~QmitkAbstractDataStorageModel () override
 
void SetDataStorage (mitk::DataStorage *dataStorage)
 Sets the data storage and registers node event listeners. More...
 
mitk::DataStorage::Pointer GetDataStorage () const
 Returns a locked pointer to the current data storage. More...
 
void SetNodePredicate (const mitk::NodePredicateBase *nodePredicate)
 Sets the node predicate and triggers a model update. More...
 
const mitk::NodePredicateBase * GetNodePredicate () const
 Returns the currently set node predicate. More...
 

Additional Inherited Members

- Protected Member Functions inherited from QmitkAbstractDataStorageModel
 QmitkAbstractDataStorageModel (QObject *parent=nullptr)
 
 QmitkAbstractDataStorageModel (mitk::DataStorage *dataStorage, QObject *parent=nullptr)
 
- Protected Attributes inherited from QmitkAbstractDataStorageModel
mitk::WeakPointer< mitk::DataStorage > m_DataStorage
 
mitk::NodePredicateBase::ConstPointer m_NodePredicate
 

Detailed Description

Table model that displays the render window layer stack for a specific renderer.

QmitkDataStorageLayerStackModel is a customized two-column table model derived from QmitkAbstractDataStorageModel. It displays data nodes assigned to a specific render window (base renderer) sorted by their layer property, with a visibility checkbox in the first column and the node name in the second column.

The model updates automatically when the data storage changes, nodes are modified or removed, or the current renderer is switched. It can be used in conjunction with a QmitkDataStorageSelectionConnector for selection synchronization.

See also
QmitkAbstractDataStorageModel, QmitkRenderWindowDataStorageListModel, QmitkRenderWindowDataStorageInspector, mitk::RenderWindowLayerUtilities

Definition at line 40 of file QmitkDataStorageLayerStackModel.h.

Constructor & Destructor Documentation

◆ QmitkDataStorageLayerStackModel()

QmitkDataStorageLayerStackModel::QmitkDataStorageLayerStackModel ( QObject *  parent = nullptr)

Construct the layer stack model.

Parameters
[in]parentOptional parent QObject.

Member Function Documentation

◆ columnCount()

int QmitkDataStorageLayerStackModel::columnCount ( const QModelIndex &  parent = QModelIndex()) const
override

Return the number of columns (always 2: visibility and node name).

Parameters
[in]parentThe parent index. Must be invalid for a valid count; returns 0 if valid.
Returns
2.

◆ data()

QVariant QmitkDataStorageLayerStackModel::data ( const QModelIndex &  index,
int  role 
) const
override

Return data for the given index and role.

Supported roles:

  • Qt::CheckStateRole (column 0): Node visibility in the current renderer.
  • Qt::DisplayRole (column 1): Data node name.
  • Qt::ToolTipRole: Descriptive tooltip for each column.
  • QmitkDataNodeRole: mitk::DataNode::Pointer wrapped in a QVariant.
  • QmitkDataNodeRawPointerRole: Raw mitk::DataNode pointer wrapped in a QVariant.
Parameters
[in]indexThe model index.
[in]roleThe data role.
Returns
The requested data, or an invalid QVariant.

◆ DataStorageChanged()

void QmitkDataStorageLayerStackModel::DataStorageChanged ( )
overridevirtual

Called when the data storage has been changed. Refreshes the model data.

Implements QmitkAbstractDataStorageModel.

◆ flags()

Qt::ItemFlags QmitkDataStorageLayerStackModel::flags ( const QModelIndex &  index) const
override

Return item flags for the given index.

Column 0 (visibility) has Qt::ItemIsUserCheckable in addition to enabled/selectable flags.

Parameters
[in]indexThe model index to query.
Returns
The item flags for the given index, or Qt::NoItemFlags if the index is invalid.

◆ GetCurrentRenderer()

mitk::BaseRenderer* QmitkDataStorageLayerStackModel::GetCurrentRenderer ( ) const

Get the currently active base renderer.

Returns
Pointer to the current mitk::BaseRenderer, or nullptr if none is set or it has expired.

◆ headerData()

QVariant QmitkDataStorageLayerStackModel::headerData ( int  section,
Qt::Orientation  orientation,
int  role 
) const
override

Return header data for the table.

Column 0 header is "Visibility", column 1 header is "Data node".

Parameters
[in]sectionThe column number.
[in]orientationThe header orientation (only Qt::Horizontal is handled).
[in]roleThe data role (only Qt::DisplayRole is handled).
Returns
The header text, or an invalid QVariant for unhandled parameters.

◆ index()

QModelIndex QmitkDataStorageLayerStackModel::index ( int  row,
int  column,
const QModelIndex &  parent 
) const

Create a model index for the given row and column.

Parameters
[in]rowThe row number.
[in]columnThe column number (0 = visibility, 1 = node name).
[in]parentThe parent index (must be invalid for this flat model).
Returns
A valid QModelIndex if the row and column are within range, otherwise an invalid index.

◆ NodeAdded()

void QmitkDataStorageLayerStackModel::NodeAdded ( const mitk::DataNode *  node)
overridevirtual

Called when a data node has been added to the data storage.

Parameters
[in]nodeThe data node that was added.
Note
This is a no-op; layers are only added after an explicit user action.

Implements QmitkAbstractDataStorageModel.

◆ NodeChanged()

void QmitkDataStorageLayerStackModel::NodeChanged ( const mitk::DataNode *  node)
overridevirtual

Called when a data node has been changed. Refreshes the model data.

Parameters
[in]nodeThe data node that was changed.

Implements QmitkAbstractDataStorageModel.

◆ NodePredicateChanged()

void QmitkDataStorageLayerStackModel::NodePredicateChanged ( )
overridevirtual

Called when the node predicate has been changed. Refreshes the model data.

Implements QmitkAbstractDataStorageModel.

◆ NodeRemoved()

void QmitkDataStorageLayerStackModel::NodeRemoved ( const mitk::DataNode *  node)
overridevirtual

Called when a data node has been removed from the data storage. Refreshes the model data.

Parameters
[in]nodeThe data node that was removed.

Implements QmitkAbstractDataStorageModel.

◆ parent()

QModelIndex QmitkDataStorageLayerStackModel::parent ( const QModelIndex &  child) const

Return the parent index (always invalid, since this is a flat table model).

Parameters
[in]childThe child index (unused).
Returns
An invalid QModelIndex.

◆ rowCount()

int QmitkDataStorageLayerStackModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const
override

Return the number of rows (layers) in the model.

Parameters
[in]parentThe parent index. Must be invalid for a valid count; returns 0 if valid.
Returns
The number of data nodes in the current layer stack.

◆ SetCurrentRenderer()

void QmitkDataStorageLayerStackModel::SetCurrentRenderer ( const std::string &  rendererName)

Set the current renderer by its name and refresh the layer stack.

Looks up the base renderer by name and rebuilds the model to show only the layer stack for that renderer.

Parameters
[in]rendererNameThe name of the base renderer to display layers for.
Precondition
The data storage must be set and not expired.

◆ setData()

bool QmitkDataStorageLayerStackModel::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
)
override

Set data for the given index and role (visibility toggling).

Only handles Qt::CheckStateRole to toggle the visibility of the data node in the current renderer. Triggers a render window update on success.

Parameters
[in]indexThe model index of the item to modify.
[in]valueThe new value (Qt::CheckState as int).
[in]roleThe data role (only Qt::CheckStateRole is handled).
Returns
true if the visibility was successfully changed, false otherwise.

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