Time for action – making the item's size definable
Let's push the example of the black rectangle a step further. So far, BlackRectangle
draws a fixed rectangle of size 75 x 25 pixels. It would be nice if one could define this size, so let us add the ability to define the size of the rectangle. Remember, only painting the rectangle larger does not help here because then you would break the promise regarding the bounding rectangle. So we need also to change the bounding rectangle as follows:
class BlackRectangle : public QGraphicsItem { public: BlackRectangle(QGraphicsItem *parent = 0) : QGraphicsItem(parent), m_rect(0, 0, 75, 25) {} //... QRectF boundingRect() const { return m_rect; } //... QRectF rect() const { return m_rect; } void setRect(const QRectF& rect) { if (rect == m_rect) return; prepareGeometryChange(); m_rect = rect; } private: QRectF m_rect; };
What just happened?
Since the destructor and the paint
function are unchanged, they are...