OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
CustomGraphicsItem.h
Go to the documentation of this file.
1
4// ###########################################################################################################################################################################################################################################################################################################################
5
6#pragma once
7
8// OpenTwin header
10
11// Qt header
12#include <QtWidgets/qgraphicsitem.h>
13#include <QtWidgets/qgraphicslayoutitem.h>
14
15namespace ot {
16
17 class OT_WIDGETS_API_EXPORT CustomGraphicsItem : public QGraphicsItem, public QGraphicsLayoutItem, public ot::GraphicsItem {
19 public:
20 CustomGraphicsItem(GraphicsItemCfg* _configuration);
21 virtual ~CustomGraphicsItem();
22
23 // ###########################################################################################################################################################################################################################################################################################################################
24
25 // Pure virtual functions
26
27 virtual QSizeF getPreferredGraphicsItemSize(void) const = 0;
28
29 protected:
30
32 virtual void paintCustomItem(QPainter* _painter, const QStyleOptionGraphicsItem* _opt, QWidget* _widget, const QRectF& _rect) = 0;
33
34 // ###########################################################################################################################################################################################################################################################################################################################
35
36 // ot::GraphicsItem
37
38 public:
39
40 virtual bool setupFromConfig(const GraphicsItemCfg* _cfg) override;
41 virtual void prepareGraphicsItemGeometryChange(void) override;
42 virtual void callPaint(QPainter* _painter, const QStyleOptionGraphicsItem* _opt, QWidget* _widget) override;
43 virtual QGraphicsLayoutItem* getQGraphicsLayoutItem(void) override { return this; };
44 virtual QGraphicsItem* getQGraphicsItem(void) override { return this; };
45 virtual const QGraphicsItem* getQGraphicsItem(void) const override { return this; };
46 virtual QSizeF graphicsItemSizeHint(Qt::SizeHint _hint, const QSizeF& _constrains) const override;
47
48 // ###########################################################################################################################################################################################################################################################################################################################
49
50 // QGraphicsLayoutItem
51
52 virtual QSizeF sizeHint(Qt::SizeHint _hint, const QSizeF& _constrains) const override;
53 virtual void setGeometry(const QRectF& _rect) override;
54
55 // ###########################################################################################################################################################################################################################################################################################################################
56
57 // QGraphicsItem
58
59 virtual QRectF boundingRect(void) const override;
60 virtual void paint(QPainter* _painter, const QStyleOptionGraphicsItem* _opt, QWidget* _widget) override;
61 virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange _change, const QVariant& _value) override;
62 virtual void mousePressEvent(QGraphicsSceneMouseEvent* _event) override;
63 virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* _event) override;
64 virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* _event) override;
65 virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* _event) override;
66 virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* _event) override;
67
68 protected:
69 virtual void graphicsElementStateChanged(const GraphicsElementStateFlags& _state) override;
70 void updateItemGeometry(void);
71
72 private:
73 QSizeF m_customItemSize;
74 };
75
76}
#define OT_DECL_NODEFAULT(___class)
Removes the default copy constructor and assignment operator.
Definition OTClassHelper.h:22
#define OT_WIDGETS_API_EXPORT
Definition OTWidgetsAPIExport.h:12
Definition CustomGraphicsItem.h:17
virtual void paintCustomItem(QPainter *_painter, const QStyleOptionGraphicsItem *_opt, QWidget *_widget, const QRectF &_rect)=0
Paint the item inside the provided rect.
virtual QGraphicsLayoutItem * getQGraphicsLayoutItem(void) override
Returns the QGraphicsLayoutItem.
Definition CustomGraphicsItem.h:43
virtual QSizeF getPreferredGraphicsItemSize(void) const =0
virtual QGraphicsItem * getQGraphicsItem(void) override
Returns the QGraphicsItem.
Definition CustomGraphicsItem.h:44
virtual const QGraphicsItem * getQGraphicsItem(void) const override
Returns the const QGraphicsItem.
Definition CustomGraphicsItem.h:45
The GraphicsItemCfg is the base class for all graphics item configurations.
Definition GraphicsItemCfg.h:33
Base class for all OpenTwin GraphicsItems GraphicsItems should be created by the GraphicsFactory and ...
Definition GraphicsItem.h:35
Definition Connector.h:8