diff --git a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp index e2be2e651..d7b747f23 100644 --- a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp +++ b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp @@ -35,7 +35,7 @@ QRectF QetGraphicsHandlerItem::boundingRect() const { qreal rect_size = m_size * m_previous_zoom_factor; QRectF rect(0-rect_size/2, 0-rect_size/2, rect_size, rect_size); - rect.adjust(-2, -2, 2, 2); + rect.adjust(-0.1, -0.1, 0.1, 0.1); return rect; } diff --git a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h index 9cf6646ce..7d562ba6c 100644 --- a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h +++ b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h @@ -30,7 +30,7 @@ class QetGraphicsHandlerItem : public QGraphicsItem { public: - QetGraphicsHandlerItem(qreal size = 15); + QetGraphicsHandlerItem(qreal size = 10); virtual QRectF boundingRect() const; enum { Type = UserType + 1200}; @@ -47,7 +47,7 @@ class QetGraphicsHandlerItem : public QGraphicsItem QColor m_color; public: - static QVector handlerForPoint(const QVector &points, int size = 15); + static QVector handlerForPoint(const QVector &points, int size = 10); }; #endif // QETGRAPHICSHANDLERITEM_H diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 17a83e934..3e0c5e51d 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -63,6 +63,15 @@ Diagram::Diagram(QETProject *project) : m_freeze_new_elements (false), m_freeze_new_conductors_ (false) { + + setItemIndexMethod(QGraphicsScene::NoIndex); + //Set to no index, because they can be the source of the crash with conductor and shape ghost. + //https://forum.qt.io/topic/71316/qgraphicsscenefinditembsptreevisitor-visit-crashes-due-to-an-obsolete-paintevent-after-qgraphicsscene-removeitem + //https://stackoverflow.com/questions/38458830/crash-after-qgraphicssceneremoveitem-with-custom-item-class + //http://www.qtcentre.org/archive/index.php/t-33730.html + //http://tech-artists.org/t/qt-properly-removing-qgraphicitems/3063 + + setProject(project); qgi_manager_ = new QGIManager(this); setBackgroundBrush(Qt::white); diff --git a/sources/editor/elementscene.cpp b/sources/editor/elementscene.cpp index b57137142..de4643a59 100644 --- a/sources/editor/elementscene.cpp +++ b/sources/editor/elementscene.cpp @@ -48,6 +48,14 @@ ElementScene::ElementScene(QETElementEditor *editor, QObject *parent) : m_qgi_manager(this), m_element_editor(editor) { + + setItemIndexMethod(QGraphicsScene::NoIndex); + //Set to no index, because they can be the source of the crash with conductor and shape ghost. + //https://forum.qt.io/topic/71316/qgraphicsscenefinditembsptreevisitor-visit-crashes-due-to-an-obsolete-paintevent-after-qgraphicsscene-removeitem + //https://stackoverflow.com/questions/38458830/crash-after-qgraphicssceneremoveitem-with-custom-item-class + //http://www.qtcentre.org/archive/index.php/t-33730.html + //http://tech-artists.org/t/qt-properly-removing-qgraphicitems/3063 + m_behavior = Normal; setItemIndexMethod(NoIndex); setGrid(1, 1);