Time for action – taking the zoom level into account

As a last detail, I would like to mention that you can draw an item differently depending on its scale. To do that, the level of detail can be used. You use the passed pointer to QStyleOptionGraphicsItem of the item's paint function and call levelOfDetailFromTransform() with the painter's world transformation. We change the paint function of the ScaleItem item to the following:

const qreal detail = option->levelOfDetailFromTransform(painter->worldTransform());
const QColor fillColor = (detail >= 5) ? Qt::yellow : Qt::red;

What just happened?

The detail parameter now contains the maximum width of unity square, which was mapped to the painter coordinate system via the painter's world transformation ...

Get Game Programming Using Qt now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.