mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-23 18:50:52 +01:00
Bug fix: qet crash when close a diagram with a cross ref item.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3015 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
12
dev_doc/enum_type_of_QGraphicsItem
Normal file
12
dev_doc/enum_type_of_QGraphicsItem
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Type = UserType + ???
|
||||||
|
Element + 1000
|
||||||
|
Conductor + 1001
|
||||||
|
Terminal + 1002
|
||||||
|
ElementTextItem + 1003
|
||||||
|
DiagramTextItem + 1004
|
||||||
|
IndependentTextItem + 1005
|
||||||
|
ConductorTextItem + 1006
|
||||||
|
DiagramImageItem + 1007
|
||||||
|
QetShapItem + 1008
|
||||||
|
crossRefItem + 1009
|
||||||
|
ElementPrimitiveDecorator + 2200
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
#include "qetapp.h"
|
#include "qetapp.h"
|
||||||
#include "qetgraphicsitem/diagramimageitem.h"
|
#include "qetgraphicsitem/diagramimageitem.h"
|
||||||
#include "qetgraphicsitem/qetshapeitem.h"
|
#include "qetgraphicsitem/qetshapeitem.h"
|
||||||
|
#include "qetgraphicsitem/crossrefitem.h"
|
||||||
|
|
||||||
const int Diagram::xGrid = 10;
|
const int Diagram::xGrid = 10;
|
||||||
const int Diagram::yGrid = 10;
|
const int Diagram::yGrid = 10;
|
||||||
@@ -80,32 +81,32 @@ Diagram::Diagram(QObject *parent) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destructeur
|
* @brief Diagram::~Diagram
|
||||||
*/
|
* Destructor
|
||||||
|
*/
|
||||||
Diagram::~Diagram() {
|
Diagram::~Diagram() {
|
||||||
// clear undo stack to prevent errors, because contains pointers to this diagram and is elements.
|
// clear undo stack to prevent errors, because contains pointers to this diagram and is elements.
|
||||||
undoStack().clear();
|
undoStack().clear();
|
||||||
// suppression du QGIManager - tous les elements qu'il connait sont supprimes
|
//delete of QGIManager, every elements he knows are removed
|
||||||
delete qgi_manager_;
|
delete qgi_manager_;
|
||||||
// remove of conductor setter
|
// remove of conductor setter
|
||||||
delete conductor_setter_;
|
delete conductor_setter_;
|
||||||
|
|
||||||
// suppression des objets gerant les deplacements
|
// delete of object for manage movement
|
||||||
delete elements_mover_;
|
delete elements_mover_;
|
||||||
delete element_texts_mover_;
|
delete element_texts_mover_;
|
||||||
|
|
||||||
// recense les items supprimables
|
// list removable items
|
||||||
QList<QGraphicsItem *> deletable_items;
|
QList<QGraphicsItem *> deletable_items;
|
||||||
foreach(QGraphicsItem *qgi, items()) {
|
foreach(QGraphicsItem *qgi, items()) {
|
||||||
if (qgi -> parentItem()) continue;
|
if (qgi -> parentItem()) continue;
|
||||||
if (qgraphicsitem_cast<Conductor *>(qgi)) continue;
|
if (qgraphicsitem_cast<Conductor *>(qgi)) continue;
|
||||||
|
else if (qgraphicsitem_cast<CrossRefItem *>(qgi)) continue;
|
||||||
|
|
||||||
deletable_items << qgi;
|
deletable_items << qgi;
|
||||||
}
|
}
|
||||||
|
|
||||||
// suppression des items supprimables
|
qDeleteAll (deletable_items);
|
||||||
foreach(QGraphicsItem *qgi_d, deletable_items) {
|
|
||||||
delete qgi_d;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ class CrossRefItem : public QGraphicsObject
|
|||||||
explicit CrossRefItem(Element *elmt, QGraphicsItem *parent = 0);
|
explicit CrossRefItem(Element *elmt, QGraphicsItem *parent = 0);
|
||||||
~CrossRefItem();
|
~CrossRefItem();
|
||||||
|
|
||||||
|
enum { Type = UserType + 1009 };
|
||||||
|
virtual int type() const { return Type; }
|
||||||
|
|
||||||
QRectF boundingRect() const;
|
QRectF boundingRect() const;
|
||||||
virtual QPainterPath shape() const;
|
virtual QPainterPath shape() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user