如果你想保持一个有限的区域,你可以重新实现ItemChanged()
宣布:
#ifndef GRAPHIC_H
#define GRAPHIC_H
#include
class Graphic : public QGraphicsRectItem
{
public:
Graphic(const QRectF & rect, QGraphicsItem * parent = 0);
protected:
virtual QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
};
#endif // GRAPHIC_H
实施:
需要ItemSendsGeometryChanges标志来捕获QGraphicsItem的位置变化
#include "graphic.h"
#include
Graphic::Graphic(const QRectF & rect, QGraphicsItem * parent )
:QGraphicsRectItem(rect,parent)
{
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemSendsGeometryChanges);
}
QVariant Graphic::itemChange ( GraphicsItemChange change, const QVariant & value )
{
if (change ==