новый файл: 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
32
src/items/JunctionItem.h
Normal file
32
src/items/JunctionItem.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#pragma once
|
||||
#include <QGraphicsObject>
|
||||
#include <QSet>
|
||||
|
||||
class ArrowItem;
|
||||
|
||||
// Small movable node that lets several arrows meet at a single point.
|
||||
class JunctionItem final : public QGraphicsObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum { Type = UserType + 2 };
|
||||
explicit JunctionItem(QGraphicsItem* parent = nullptr, int id = -1);
|
||||
|
||||
QRectF boundingRect() const override;
|
||||
void paint(QPainter* p, const QStyleOptionGraphicsItem* opt, QWidget* widget) override;
|
||||
int type() const override { return Type; }
|
||||
|
||||
void addArrow(ArrowItem* a);
|
||||
void removeArrow(ArrowItem* a);
|
||||
|
||||
bool hitTest(const QPointF& scenePos, qreal radius) const;
|
||||
int id() const { return m_id; }
|
||||
void setId(int id) { m_id = id; }
|
||||
|
||||
protected:
|
||||
QVariant itemChange(GraphicsItemChange change, const QVariant& value) override;
|
||||
|
||||
private:
|
||||
qreal m_radius = 5.0;
|
||||
int m_id;
|
||||
QSet<ArrowItem*> m_arrows;
|
||||
};
|
||||
Loading…
Reference in a new issue