Time for action – reacting to an item's selection state
The assigned pointer to a QStyleOptionGraphicsItem
item might become handy if you want to alter the appearance of the item related to its state. For example, say you want to fill the rectangle with red when it gets selected. To do so, you only have to type this:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
Q_UNUSED(widget)
if (option->state & QStyle::State_Selected)
painter->fillRect(boundingRect(), Qt::red);
else
painter->fillRect(boundingRect(), Qt::black);
}
What just happened?
The state
variable is a bitmask holding the possible states of the item. You can check its value against the values of the QStyle::StateFlag
parameter by using bitwise operators. In the preceding case, the state
variable is checked against the State_Selected
parameter. If this flag is set, the rectangle is painted red.
Tip
The type of state is QFlags<StateFlag>
. So, instead of using...