13 return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
14 20 + penWidth, 20 + penWidth);
17 void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
18 QWidget *widget)
override
20 painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
30 enum {
Type = UserType + 1 };
41void example(QGraphicsItem *item, QGraphicsView *view)
45 item->setCursor(Qt::IBeamCursor);
51 item->setCursor(Qt::IBeamCursor);
57 QGraphicsRectItem rect;
58 rect.setPos(100, 100);
60 rect.sceneTransform().map(QPointF(0, 0));
63 rect.sceneTransform().inverted().map(QPointF(100, 100));
70 QGraphicsRectItem rect;
71 rect.setPos(100, 100);
73 rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0));
76 rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100));
87 void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
88 QWidget *widget)
override;
98 void setAcceptDrops(
bool on);
110 return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
111 diameter + penWidth, diameter + penWidth);
119 path.addEllipse(boundingRect());
126 const QStyleOptionGraphicsItem *option,
129 painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
136 static const int ObjectName = 0;
138 QGraphicsItem *item = scene.itemAt(100, 50, transform);
139 if (item->data(ObjectName).toString().isEmpty()) {
141 item->setData(ObjectName,
"Custom");
149 QGraphicsScene scene;
150 QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20));
151 QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20));
153 line->installSceneEventFilter(ellipse);
156 ellipse->installSceneEventFilter(line);
165 QAction *removeAction = menu.addAction(
"Remove");
166 QAction *markAction = menu.addAction(
"Mark");
167 QAction *selectedAction = menu.exec(event->screenPos());
176 setAcceptDrops(
true);
182 event->setAccepted(event->mimeData()->hasFormat(
"text/plain"));
190 if (change == ItemPositionChange && scene()) {
192 QPointF newPos = value.toPointF();
193 QRectF rect = scene()->sceneRect();
194 if (!rect.contains(newPos)) {
196 newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
197 newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
201 return QGraphicsItem::itemChange(change, value);
208 if (radius != newRadius) {
209 prepareGeometryChange();
215void snippets( QGraphicsScene *scene, QGraphicsItem *item,
216 QGraphicsView *view,
const QRectF &rect,
int dx,
int dy)
220 QGraphicsItemGroup *group = scene->createItemGroup(scene->selectedItems());
223 scene->destroyItemGroup(group);
227 QTransform xform = item->deviceTransform(view->viewportTransform());
228 QRect deviceRect = xform.mapRect(rect).toAlignedRect();
229 view->viewport()->scroll(dx, dy, deviceRect);
234
235
236
237
238
239
240
241
242
243
void dragEnterEvent(QGraphicsSceneDragDropEvent *event) override
This event handler, for event event, can be reimplemented to receive drag enter events for this item.
QRectF boundingRect() const override
[8]
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
[9]
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override
[13]
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
[14]
void setRadius(qreal newRadius)
[15]
QPainterPath shape() const override
[8]
int type() const override
Returns the type of an item as an int.
QRectF boundingRect() const override
This pure virtual function defines the outer bounds of the item as a rectangle; all painting must be ...
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
This function, which is usually called by QGraphicsView, paints the contents of an item in local coor...
void example(QAbstractAnimation *anim1, QAbstractAnimation *anim2)
void data_snippet(QGraphicsScene &scene, QTransform &transform)
[10]
void snippets(QGraphicsScene *scene, QGraphicsItem *item, QGraphicsView *view, const QRectF &rect, int dx, int dy)
[16]