Files
cbh/ElaWidgetTools/ElaGraphicsScene.h
2025-09-20 01:41:33 +08:00

70 lines
2.5 KiB
C++

#ifndef ELAGRAPHICSSCENE_H
#define ELAGRAPHICSSCENE_H
#include <QDataStream>
#include <QEvent>
#include <QGraphicsScene>
#include <QJsonObject>
#include <QObject>
#include <QPainter>
#include "ElaDef.h"
#include "ElaProperty.h"
class ElaGraphicsItem;
class ElaGraphicsScenePrivate;
class ELA_EXPORT ElaGraphicsScene : public QGraphicsScene {
Q_OBJECT
Q_Q_CREATE(ElaGraphicsScene)
Q_PROPERTY_CREATE_Q_H(bool, IsCheckLinkPort)
Q_PROPERTY_CREATE_Q_H(QString, SerializePath)
public:
explicit ElaGraphicsScene(QObject *parent = nullptr);
~ElaGraphicsScene();
void addItem(ElaGraphicsItem *item);
void removeItem(ElaGraphicsItem *item);
void removeSelectedItems();
void clear();
QList<ElaGraphicsItem *> createAndAddItem(int width, int height, int count = 1);
QList<ElaGraphicsItem *> getSelectedElaItems() const;
QList<ElaGraphicsItem *> getElaItems();
QList<ElaGraphicsItem *> getElaItems(QPoint pos);
QList<ElaGraphicsItem *> getElaItems(QPointF pos);
QList<ElaGraphicsItem *> getElaItems(QRect rect);
QList<ElaGraphicsItem *> getElaItems(QRectF rect);
void setSceneMode(ElaGraphicsSceneType::SceneMode mode);
ElaGraphicsSceneType::SceneMode getSceneMode() const;
void selectAllItems();
QList<QVariantMap> getItemLinkList() const;
bool addItemLink(ElaGraphicsItem *item1, ElaGraphicsItem *item2, int port1 = 0, int port2 = 0);
bool removeItemLink(ElaGraphicsItem *item1);
bool removeItemLink(ElaGraphicsItem *item1, ElaGraphicsItem *item2, int port1 = 0, int port2 = 0);
QVector<QVariantMap> getItemsDataRoute() const;
// 序列化 反序列化
void serialize();
void deserialize();
Q_SIGNALS:
void showItemLink();
void mouseLeftClickedItem(ElaGraphicsItem *item);
void mouseRightClickedItem(ElaGraphicsItem *item);
void mouseDoubleClickedItem(ElaGraphicsItem *item);
protected:
virtual void focusOutEvent(QFocusEvent *event) override;
virtual void keyPressEvent(QKeyEvent *event) override;
virtual void keyReleaseEvent(QKeyEvent *event) override;
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
};
#endif // ELAGRAPHICSSCENE_H