новый файл: CMakeLists.txt
новый файл: shell.nix новый файл: src/MainWindow.cpp новый файл: src/MainWindow.h новый файл: src/items/ArrowItem.cpp новый файл: src/items/ArrowItem.h новый файл: src/items/BlockItem.cpp новый файл: src/items/BlockItem.h новый файл: src/items/DiagramScene.cpp новый файл: src/items/DiagramScene.h новый файл: src/items/JunctionItem.cpp новый файл: src/items/JunctionItem.h новый файл: src/main.cpp изменено: src/items/ArrowItem.cpp изменено: src/items/ArrowItem.h изменено: src/items/BlockItem.h изменено: src/items/DiagramScene.cpp изменено: src/items/DiagramScene.h
This commit is contained in:
commit
53afa3f728
87 changed files with 48249 additions and 0 deletions
45
src/items/BlockItem.h
Normal file
45
src/items/BlockItem.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#pragma once
|
||||
#include <QGraphicsObject>
|
||||
#include <QSet>
|
||||
|
||||
class ArrowItem;
|
||||
|
||||
class BlockItem final : public QGraphicsObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum class Port { Input, Control, Output, Mechanism };
|
||||
enum { Type = UserType + 1 };
|
||||
|
||||
explicit BlockItem(QString title = "Function", QGraphicsItem* parent = nullptr, int id = -1);
|
||||
|
||||
QRectF boundingRect() const override;
|
||||
void paint(QPainter* p, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||
int type() const override { return Type; }
|
||||
|
||||
QString title() const { return m_title; }
|
||||
void setTitle(const QString& t);
|
||||
int id() const { return m_id; }
|
||||
void setId(int id) { m_id = id; }
|
||||
|
||||
QPointF portScenePos(Port p) const;
|
||||
bool hitTestPort(const QPointF& scenePos, Port* outPort, QPointF* outLocalPos = nullptr, qreal radiusPx = 10.0) const;
|
||||
|
||||
void addArrow(ArrowItem* a);
|
||||
void removeArrow(ArrowItem* a);
|
||||
|
||||
signals:
|
||||
void geometryChanged();
|
||||
|
||||
protected:
|
||||
QVariant itemChange(GraphicsItemChange change, const QVariant& value) override;
|
||||
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* e) override;
|
||||
|
||||
private:
|
||||
QString m_title;
|
||||
QRectF m_rect; // local rect
|
||||
int m_id;
|
||||
QSet<ArrowItem*> m_arrows;
|
||||
|
||||
QPointF portLocalPos(Port p) const;
|
||||
QPair<QPointF, QPointF> portSegment(Port p) const;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue