62 Q_PROPERTY(QBrush backgroundBrush READ backgroundBrush WRITE setBackgroundBrush)
63 Q_PROPERTY(QBrush foregroundBrush READ foregroundBrush WRITE setForegroundBrush)
64 Q_PROPERTY(ItemIndexMethod itemIndexMethod READ itemIndexMethod WRITE setItemIndexMethod)
65 Q_PROPERTY(QRectF sceneRect READ sceneRect WRITE setSceneRect)
66 Q_PROPERTY(
int bspTreeDepth READ bspTreeDepth WRITE setBspTreeDepth)
67 Q_PROPERTY(QPalette palette READ palette WRITE setPalette)
68 Q_PROPERTY(QFont font READ font WRITE setFont)
69 Q_PROPERTY(
bool stickyFocus READ stickyFocus WRITE setStickyFocus)
70 Q_PROPERTY(qreal minimumRenderSize READ minimumRenderSize WRITE setMinimumRenderSize)
71 Q_PROPERTY(
bool focusOnTouch READ focusOnTouch WRITE setFocusOnTouch)
74 enum ItemIndexMethod {
78 Q_ENUM(ItemIndexMethod)
81 BackgroundLayer = 0x2,
82 ForegroundLayer = 0x4,
85 Q_DECLARE_FLAGS(SceneLayers, SceneLayer)
87 QGraphicsScene(QObject *parent =
nullptr);
88 QGraphicsScene(
const QRectF &sceneRect, QObject *parent =
nullptr);
89 QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent =
nullptr);
90 virtual ~QGraphicsScene();
92 QRectF sceneRect()
const;
93 inline qreal width()
const {
return sceneRect().width(); }
94 inline qreal height()
const {
return sceneRect().height(); }
95 void setSceneRect(
const QRectF &rect);
96 inline void setSceneRect(qreal x, qreal y, qreal w, qreal h)
97 { setSceneRect(QRectF(x, y, w, h)); }
99 void render(QPainter *painter,
100 const QRectF &target = QRectF(),
const QRectF &source = QRectF(),
101 Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio);
103 ItemIndexMethod itemIndexMethod()
const;
104 void setItemIndexMethod(ItemIndexMethod method);
106 int bspTreeDepth()
const;
107 void setBspTreeDepth(
int depth);
109 QRectF itemsBoundingRect()
const;
111 QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder)
const;
113 QList<QGraphicsItem *> items(
const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder,
const QTransform &deviceTransform = QTransform())
const;
114 QList<QGraphicsItem *> items(
const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder,
const QTransform &deviceTransform = QTransform())
const;
115 QList<QGraphicsItem *> items(
const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder,
const QTransform &deviceTransform = QTransform())
const;
116 QList<QGraphicsItem *> items(
const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder,
const QTransform &deviceTransform = QTransform())
const;
117 inline QList<QGraphicsItem *> items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order,
118 const QTransform &deviceTransform = QTransform())
const
119 {
return items(QRectF(x, y, w, h), mode, order, deviceTransform); }
121 QList<QGraphicsItem *> collidingItems(
const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape)
const;
122 QGraphicsItem *itemAt(
const QPointF &pos,
const QTransform &deviceTransform)
const;
123 inline QGraphicsItem *itemAt(qreal x, qreal y,
const QTransform &deviceTransform)
const
124 {
return itemAt(QPointF(x, y), deviceTransform); }
126 QList<QGraphicsItem *> selectedItems()
const;
127 QPainterPath selectionArea()
const;
128 void setSelectionArea(
const QPainterPath &path,
const QTransform &deviceTransform);
129 void setSelectionArea(
const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape,
const QTransform &deviceTransform = QTransform());
131 QGraphicsItemGroup *createItemGroup(
const QList<QGraphicsItem *> &items);
132 void destroyItemGroup(QGraphicsItemGroup *group);
134 void addItem(QGraphicsItem *item);
135 QGraphicsEllipseItem *addEllipse(
const QRectF &rect,
const QPen &pen = QPen(),
const QBrush &brush = QBrush());
136 QGraphicsLineItem *addLine(
const QLineF &line,
const QPen &pen = QPen());
137 QGraphicsPathItem *addPath(
const QPainterPath &path,
const QPen &pen = QPen(),
const QBrush &brush = QBrush());
138 QGraphicsPixmapItem *addPixmap(
const QPixmap &pixmap);
139 QGraphicsPolygonItem *addPolygon(
const QPolygonF &polygon,
const QPen &pen = QPen(),
const QBrush &brush = QBrush());
140 QGraphicsRectItem *addRect(
const QRectF &rect,
const QPen &pen = QPen(),
const QBrush &brush = QBrush());
141 QGraphicsTextItem *addText(
const QString &text,
const QFont &font = QFont());
142 QGraphicsSimpleTextItem *addSimpleText(
const QString &text,
const QFont &font = QFont());
143 QGraphicsProxyWidget *addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags());
144 inline QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h,
const QPen &pen = QPen(),
const QBrush &brush = QBrush())
145 {
return addEllipse(QRectF(x, y, w, h), pen, brush); }
146 inline QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2,
const QPen &pen = QPen())
147 {
return addLine(QLineF(x1, y1, x2, y2), pen); }
148 inline QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h,
const QPen &pen = QPen(),
const QBrush &brush = QBrush())
149 {
return addRect(QRectF(x, y, w, h), pen, brush); }
150 void removeItem(QGraphicsItem *item);
152 QGraphicsItem *focusItem()
const;
153 void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason);
154 bool hasFocus()
const;
155 void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason);
158 void setStickyFocus(
bool enabled);
159 bool stickyFocus()
const;
161 QGraphicsItem *mouseGrabberItem()
const;
163 QBrush backgroundBrush()
const;
164 void setBackgroundBrush(
const QBrush &brush);
166 QBrush foregroundBrush()
const;
167 void setForegroundBrush(
const QBrush &brush);
169 virtual QVariant inputMethodQuery(Qt::InputMethodQuery query)
const;
171 QList <QGraphicsView *> views()
const;
173 inline void update(qreal x, qreal y, qreal w, qreal h)
174 { update(QRectF(x, y, w, h)); }
175 inline void invalidate(qreal x, qreal y, qreal w, qreal h, SceneLayers layers = AllLayers)
176 { invalidate(QRectF(x, y, w, h), layers); }
178 QStyle *style()
const;
179 void setStyle(QStyle *style);
182 void setFont(
const QFont &font);
184 QPalette palette()
const;
185 void setPalette(
const QPalette &palette);
187 bool isActive()
const;
188 QGraphicsItem *activePanel()
const;
189 void setActivePanel(QGraphicsItem *item);
190 QGraphicsWidget *activeWindow()
const;
191 void setActiveWindow(QGraphicsWidget *widget);
193 bool sendEvent(QGraphicsItem *item, QEvent *event);
195 qreal minimumRenderSize()
const;
196 void setMinimumRenderSize(qreal minSize);
198 bool focusOnTouch()
const;
199 void setFocusOnTouch(
bool enabled);
202 void update(
const QRectF &rect = QRectF());
203 void invalidate(
const QRectF &rect = QRectF(), SceneLayers layers = AllLayers);
205 void clearSelection();
209 bool event(QEvent *event) override;
210 bool eventFilter(QObject *watched, QEvent *event) override;
211 virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
212 virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
213 virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
214 virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
215 virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
216 virtual void focusInEvent(QFocusEvent *event);
217 virtual void focusOutEvent(QFocusEvent *event);
218 virtual void helpEvent(QGraphicsSceneHelpEvent *event);
219 virtual void keyPressEvent(QKeyEvent *event);
220 virtual void keyReleaseEvent(QKeyEvent *event);
221 virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
222 virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
223 virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
224 virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
225 virtual void wheelEvent(QGraphicsSceneWheelEvent *event);
226 virtual void inputMethodEvent(QInputMethodEvent *event);
228 virtual void drawBackground(QPainter *painter,
const QRectF &rect);
229 virtual void drawForeground(QPainter *painter,
const QRectF &rect);
230 virtual void drawItems(QPainter *painter,
int numItems,
231 QGraphicsItem *items[],
232 const QStyleOptionGraphicsItem options[],
233 QWidget *widget =
nullptr);
236 virtual bool focusNextPrevChild(
bool next);
239 void changed(
const QList<QRectF> ®ion);
240 void sceneRectChanged(
const QRectF &rect);
241 void selectionChanged();
242 void focusItemChanged(QGraphicsItem *newFocus, QGraphicsItem *oldFocus, Qt::FocusReason reason);
245 Q_DECLARE_PRIVATE(QGraphicsScene)
246 Q_DISABLE_COPY(QGraphicsScene)
247 Q_PRIVATE_SLOT(d_func(),
void _q_emitUpdated())
248 Q_PRIVATE_SLOT(d_func(),
void _q_polishItems())
249 Q_PRIVATE_SLOT(d_func(),
void _q_processDirtyItems())
250 Q_PRIVATE_SLOT(d_func(),
void _q_updateScenePosDescendants())
251 friend class QGraphicsItem;
252 friend class QGraphicsItemPrivate;
253 friend class QGraphicsObject;
254 friend class QGraphicsView;
255 friend class QGraphicsViewPrivate;
256 friend class QGraphicsWidget;
257 friend class QGraphicsWidgetPrivate;
258 friend class QGraphicsEffect;
259 friend class QGraphicsSceneIndex;
260 friend class QGraphicsSceneIndexPrivate;
261 friend class QGraphicsSceneBspTreeIndex;
262 friend class QGraphicsSceneBspTreeIndexPrivate;
263 friend class QGraphicsItemEffectSourcePrivate;
264#ifndef QT_NO_GESTURES
265 friend class QGesture;