feat: 添加ElaWidgetTool库

This commit is contained in:
sleepwithoutbz
2025-09-19 22:40:52 +08:00
parent 5f93e8caf6
commit 4eef5c7fd5
407 changed files with 36325 additions and 7 deletions

View File

@@ -0,0 +1,70 @@
#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