Cell Based View Properties

As described in Job Tree View, per-cell view properties can be retrieved as an instance of the Cell class. The mechanics behind this are implemented in CellStandardItem.h.

Implementation

This header contains an enumeration of the per-cell attributes which are not members of QStandardItem. This enumeration starts at Qt::UserRole + 1. Qt has a built in mechanism for extending the per-item view attributes which we use here.

Two significant functions defined in this file are applyCellPropertiesToItem and extractCellPropertiesFromItem. These functions are used to save the property values from the Cell instance onto the QStandardItem and later retrieve them.

A note on adding new properties

When adding new properties to the Cell class and by extension the CellUserRoles enumeration it is important to consider if the new property is indeed a view property or whether it should instead be part of your model. The JobTreeView is designed with this use case in mind and has mechanisms to allow you to synchronise the state of the view with the state of your model.