diff options
Diffstat (limited to 'examples/widgets/graphicsview/diagramscene')
7 files changed, 31 insertions, 54 deletions
diff --git a/examples/widgets/graphicsview/diagramscene/arrow.cpp b/examples/widgets/graphicsview/diagramscene/arrow.cpp index 525e0b3fbb..9b2472bb33 100644 --- a/examples/widgets/graphicsview/diagramscene/arrow.cpp +++ b/examples/widgets/graphicsview/diagramscene/arrow.cpp @@ -50,19 +50,17 @@ #include "arrow.h" +#include "diagramitem.h" -#include <qmath.h> -#include <QPen> #include <QPainter> +#include <QPen> +#include <QtMath> //! [0] Arrow::Arrow(DiagramItem *startItem, DiagramItem *endItem, QGraphicsItem *parent) - : QGraphicsLineItem(parent) + : QGraphicsLineItem(parent), myStartItem(startItem), myEndItem(endItem) { - myStartItem = startItem; - myEndItem = endItem; setFlag(QGraphicsItem::ItemIsSelectable, true); - myColor = Qt::black; setPen(QPen(myColor, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); } //! [0] @@ -98,7 +96,7 @@ void Arrow::updatePosition() //! [4] void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, - QWidget *) + QWidget *) { if (myStartItem->collidesWithItem(myEndItem)) return; diff --git a/examples/widgets/graphicsview/diagramscene/arrow.h b/examples/widgets/graphicsview/diagramscene/arrow.h index e0fa389d53..13001959bd 100644 --- a/examples/widgets/graphicsview/diagramscene/arrow.h +++ b/examples/widgets/graphicsview/diagramscene/arrow.h @@ -53,16 +53,7 @@ #include <QGraphicsLineItem> -#include "diagramitem.h" - -QT_BEGIN_NAMESPACE -class QGraphicsPolygonItem; -class QGraphicsLineItem; -class QGraphicsScene; -class QRectF; -class QGraphicsSceneMouseEvent; -class QPainterPath; -QT_END_NAMESPACE +class DiagramItem; //! [0] class Arrow : public QGraphicsLineItem @@ -71,7 +62,7 @@ public: enum { Type = UserType + 4 }; Arrow(DiagramItem *startItem, DiagramItem *endItem, - QGraphicsItem *parent = 0); + QGraphicsItem *parent = nullptr); int type() const override { return Type; } QRectF boundingRect() const override; @@ -83,13 +74,14 @@ public: void updatePosition(); protected: - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) override; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = nullptr) override; private: DiagramItem *myStartItem; DiagramItem *myEndItem; - QColor myColor; QPolygonF arrowHead; + QColor myColor = Qt::black; }; //! [0] diff --git a/examples/widgets/graphicsview/diagramscene/diagramitem.cpp b/examples/widgets/graphicsview/diagramscene/diagramitem.cpp index 3aa685635e..8ec577170b 100644 --- a/examples/widgets/graphicsview/diagramscene/diagramitem.cpp +++ b/examples/widgets/graphicsview/diagramscene/diagramitem.cpp @@ -58,12 +58,10 @@ //! [0] DiagramItem::DiagramItem(DiagramType diagramType, QMenu *contextMenu, - QGraphicsItem *parent) - : QGraphicsPolygonItem(parent) + QGraphicsItem *parent) + : QGraphicsPolygonItem(parent), myDiagramType(diagramType) + , myContextMenu(contextMenu) { - myDiagramType = diagramType; - myContextMenu = contextMenu; - QPainterPath path; switch (myDiagramType) { case StartEnd: @@ -101,17 +99,17 @@ DiagramItem::DiagramItem(DiagramType diagramType, QMenu *contextMenu, //! [1] void DiagramItem::removeArrow(Arrow *arrow) { - int index = arrows.indexOf(arrow); - - if (index != -1) - arrows.removeAt(index); + arrows.removeAll(arrow); } //! [1] //! [2] void DiagramItem::removeArrows() { - for (Arrow *arrow : qAsConst(arrows)) { + // need a copy here since removeArrow() will + // modify the arrows container + const auto arrowsCopy = arrows; + for (Arrow *arrow : arrowsCopy) { arrow->startItem()->removeArrow(arrow); arrow->endItem()->removeArrow(arrow); scene()->removeItem(arrow); diff --git a/examples/widgets/graphicsview/diagramscene/diagramitem.h b/examples/widgets/graphicsview/diagramscene/diagramitem.h index 3a43ec57fc..ffaea4b7a8 100644 --- a/examples/widgets/graphicsview/diagramscene/diagramitem.h +++ b/examples/widgets/graphicsview/diagramscene/diagramitem.h @@ -52,19 +52,12 @@ #define DIAGRAMITEM_H #include <QGraphicsPixmapItem> -#include <QList> +#include <QVector> QT_BEGIN_NAMESPACE class QPixmap; -class QGraphicsItem; -class QGraphicsScene; -class QTextEdit; -class QGraphicsSceneMouseEvent; -class QMenu; class QGraphicsSceneContextMenuEvent; -class QPainter; -class QStyleOptionGraphicsItem; -class QWidget; +class QMenu; class QPolygonF; QT_END_NAMESPACE @@ -77,7 +70,7 @@ public: enum { Type = UserType + 15 }; enum DiagramType { Step, Conditional, StartEnd, Io }; - DiagramItem(DiagramType diagramType, QMenu *contextMenu, QGraphicsItem *parent = 0); + DiagramItem(DiagramType diagramType, QMenu *contextMenu, QGraphicsItem *parent = nullptr); void removeArrow(Arrow *arrow); void removeArrows(); @@ -85,7 +78,7 @@ public: QPolygonF polygon() const { return myPolygon; } void addArrow(Arrow *arrow); QPixmap image() const; - int type() const override { return Type;} + int type() const override { return Type; } protected: void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override; @@ -95,7 +88,7 @@ private: DiagramType myDiagramType; QPolygonF myPolygon; QMenu *myContextMenu; - QList<Arrow *> arrows; + QVector<Arrow *> arrows; }; //! [0] diff --git a/examples/widgets/graphicsview/diagramscene/diagramscene.cpp b/examples/widgets/graphicsview/diagramscene/diagramscene.cpp index 40272834c3..d0688d8552 100644 --- a/examples/widgets/graphicsview/diagramscene/diagramscene.cpp +++ b/examples/widgets/graphicsview/diagramscene/diagramscene.cpp @@ -51,8 +51,8 @@ #include "diagramscene.h" #include "arrow.h" -#include <QTextCursor> #include <QGraphicsSceneMouseEvent> +#include <QTextCursor> //! [0] DiagramScene::DiagramScene(QMenu *itemMenu, QObject *parent) @@ -61,8 +61,8 @@ DiagramScene::DiagramScene(QMenu *itemMenu, QObject *parent) myItemMenu = itemMenu; myMode = MoveItem; myItemType = DiagramItem::Step; - line = 0; - textItem = 0; + line = nullptr; + textItem = nullptr; myItemColor = Qt::white; myTextColor = Qt::black; myLineColor = Qt::black; @@ -188,7 +188,7 @@ void DiagramScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) //! [10] void DiagramScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) { - if (myMode == InsertLine && line != 0) { + if (myMode == InsertLine && line != nullptr) { QLineF newLine(line->line().p1(), mouseEvent->scenePos()); line->setLine(newLine); } else if (myMode == MoveItem) { @@ -200,7 +200,7 @@ void DiagramScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) //! [11] void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) { - if (line != 0 && myMode == InsertLine) { + if (line != nullptr && myMode == InsertLine) { QList<QGraphicsItem *> startItems = items(line->line().p1()); if (startItems.count() && startItems.first() == line) startItems.removeFirst(); @@ -228,7 +228,7 @@ void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) } } //! [12] //! [13] - line = 0; + line = nullptr; QGraphicsScene::mouseReleaseEvent(mouseEvent); } //! [13] diff --git a/examples/widgets/graphicsview/diagramscene/diagramscene.h b/examples/widgets/graphicsview/diagramscene/diagramscene.h index 15063d58b7..5682468ef6 100644 --- a/examples/widgets/graphicsview/diagramscene/diagramscene.h +++ b/examples/widgets/graphicsview/diagramscene/diagramscene.h @@ -74,7 +74,7 @@ class DiagramScene : public QGraphicsScene public: enum Mode { InsertItem, InsertLine, InsertText, MoveItem }; - explicit DiagramScene(QMenu *itemMenu, QObject *parent = 0); + explicit DiagramScene(QMenu *itemMenu, QObject *parent = nullptr); QFont font() const { return myFont; } QColor textColor() const { return myTextColor; } QColor itemColor() const { return myItemColor; } diff --git a/examples/widgets/graphicsview/diagramscene/diagramtextitem.h b/examples/widgets/graphicsview/diagramscene/diagramtextitem.h index f5d3d3b95e..7809609e24 100644 --- a/examples/widgets/graphicsview/diagramscene/diagramtextitem.h +++ b/examples/widgets/graphicsview/diagramscene/diagramtextitem.h @@ -52,12 +52,8 @@ #define DIAGRAMTEXTITEM_H #include <QGraphicsTextItem> -#include <QPen> QT_BEGIN_NAMESPACE -class QFocusEvent; -class QGraphicsItem; -class QGraphicsScene; class QGraphicsSceneMouseEvent; QT_END_NAMESPACE @@ -69,7 +65,7 @@ class DiagramTextItem : public QGraphicsTextItem public: enum { Type = UserType + 3 }; - DiagramTextItem(QGraphicsItem *parent = 0); + DiagramTextItem(QGraphicsItem *parent = nullptr); int type() const override { return Type; } |