diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index ac15520a4..a949f8733 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -90,10 +90,12 @@ using namespace TechDrawGui; MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget* parent) : Gui::MDIView(doc, parent), - m_view(new QGVPage(pageVp)), + //m_view(new QGVPage(pageVp)), pageGui(pageVp), m_frameState(true) { + m_view = new QGVPage(pageVp,m_scene); + m_backgroundAction = new QAction(tr("&Background"), this); m_backgroundAction->setEnabled(false); m_backgroundAction->setCheckable(true); @@ -141,7 +143,7 @@ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget* this, SLOT(setRenderer(QAction *))); setWindowTitle(tr("dummy[*]")); //Yuck. prevents "QWidget::setWindowModified: The window title does not contain a '[*]' placeholder" - setCentralWidget(m_view); + setCentralWidget(m_view); //this makes m_view a Qt child of MDIViewPage m_orientation = QPrinter::Landscape; m_pageSize = QPrinter::A4; @@ -194,7 +196,8 @@ MDIViewPage::~MDIViewPage() } deleteItems.clear(); - delete m_view; + //m_view will be deleted by MDIViewPage as a Qt child + //delete m_view; } diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.h b/src/Mod/TechDraw/Gui/MDIViewPage.h index 617e700ff..44e6e0b7d 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.h +++ b/src/Mod/TechDraw/Gui/MDIViewPage.h @@ -28,6 +28,7 @@ #include "Gui/Selection.h" #include +#include QT_BEGIN_NAMESPACE class QAction; @@ -79,6 +80,8 @@ public: QGVPage* getQGVPage(void) {return m_view;}; + QGraphicsScene m_scene; + public Q_SLOTS: void setRenderer(QAction *action); void viewAll(); diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index 4c777dd3f..0ee1792cb 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -28,7 +28,7 @@ # include # include # include -# include +//# include # include # include # include @@ -77,7 +77,7 @@ using namespace TechDrawGui; -QGVPage::QGVPage(ViewProviderPage *vp, QWidget *parent) +QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene& s, QWidget *parent) : QGraphicsView(parent) , pageTemplate(0) , m_renderer(Native) @@ -91,7 +91,7 @@ QGVPage::QGVPage(ViewProviderPage *vp, QWidget *parent) const char* name = vp->getPageObject()->getNameInDocument(); setObjectName(QString::fromLocal8Bit(name)); - setScene(new QGraphicsScene(this)); + setScene(&s); //setViewportUpdateMode(QGraphicsView::FullViewportUpdate); setCacheMode(QGraphicsView::CacheBackground); setTransformationAnchor(AnchorUnderMouse); @@ -105,12 +105,6 @@ QGVPage::QGVPage(ViewProviderPage *vp, QWidget *parent) m_backgroundItem->setZValue(ZVALUE::BACKGROUND); // scene()->addItem(m_backgroundItem); // TODO IF SEGFAULTS WITH DRAW ENABLE THIS (REDRAWS ARE SLOWER :s) - // Prepare background check-board pattern - QLinearGradient gradient; - gradient.setStart(0, 0); - gradient.setFinalStop(0, height()); - gradient.setColorAt(0., QColor(72, 72, 72)); - gradient.setColorAt(1., QColor(150, 150, 150)); bkgBrush = new QBrush(QColor::fromRgb(70,70,70)); resetCachedContent(); diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index f334295cc..1af759071 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -24,6 +24,7 @@ #define DRAWINGGUI_CANVASVIEW_H #include +#include #include "ViewProviderPage.h" @@ -54,7 +55,7 @@ class TechDrawGuiExport QGVPage : public QGraphicsView public: enum RendererType { Native, OpenGL, Image }; - QGVPage(ViewProviderPage *vp, QWidget *parent = 0); + QGVPage(ViewProviderPage *vp, QGraphicsScene& s, QWidget *parent = 0); ~QGVPage(); void setRenderer(RendererType type = Native); @@ -116,7 +117,7 @@ private: bool drawBkg; QGraphicsRectItem *m_backgroundItem; QGraphicsRectItem *m_outlineItem; - QBrush *bkgBrush; + QBrush* bkgBrush; QImage m_image; ViewProviderPage *pageGui; };