diff --git a/mainwindow.cpp b/mainwindow.cpp index 8fcf73018..0ff2faf61 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -620,8 +620,20 @@ void MainWindow::keyPressEvent ( QKeyEvent * event ){ void MainWindow::ActionDraw(bool checked){ if(checked){ ui->actionDetails->setChecked(false); + /*Save scroll bars value for previous scene.*/ + QScrollBar *horScrollBar = view->horizontalScrollBar(); + currentScene->setHorScrollBar(horScrollBar->value()); + QScrollBar *verScrollBar = view->verticalScrollBar(); + currentScene->setVerScrollBar(verScrollBar->value()); + currentScene = sceneDraw; view->setScene(currentScene); + /*Set value for current scene scroll bar.*/ + horScrollBar = view->horizontalScrollBar(); + horScrollBar->setValue(currentScene->getHorScrollBar()); + verScrollBar = view->verticalScrollBar(); + verScrollBar->setValue(currentScene->getVerScrollBar()); + mode = Draw::Calculation; doc->setCurrentData(); } else { @@ -632,8 +644,19 @@ void MainWindow::ActionDraw(bool checked){ void MainWindow::ActionDetails(bool checked){ if(checked){ ui->actionDraw->setChecked(false); + /*Save scroll bars value for previous scene.*/ + QScrollBar *horScrollBar = view->horizontalScrollBar(); + currentScene->setHorScrollBar(horScrollBar->value()); + QScrollBar *verScrollBar = view->verticalScrollBar(); + currentScene->setVerScrollBar(verScrollBar->value()); + currentScene = sceneDetails; view->setScene(sceneDetails); + /*Set value for current scene scroll bar.*/ + horScrollBar = view->horizontalScrollBar(); + horScrollBar->setValue(currentScene->getHorScrollBar()); + verScrollBar = view->verticalScrollBar(); + verScrollBar->setValue(currentScene->getVerScrollBar()); mode = Draw::Modeling; } else { ui->actionDetails->setChecked(true); diff --git a/widgets/vmaingraphicsscene.cpp b/widgets/vmaingraphicsscene.cpp index 61144c26e..1da600a9e 100644 --- a/widgets/vmaingraphicsscene.cpp +++ b/widgets/vmaingraphicsscene.cpp @@ -4,11 +4,11 @@ #include #include -VMainGraphicsScene::VMainGraphicsScene():QGraphicsScene(){ +VMainGraphicsScene::VMainGraphicsScene():QGraphicsScene(), horScrollBar(0), verScrollBar(0){ } - -VMainGraphicsScene::VMainGraphicsScene(const QRectF & sceneRect, QObject * parent):QGraphicsScene ( sceneRect, parent ){ +VMainGraphicsScene::VMainGraphicsScene(const QRectF & sceneRect, QObject * parent): + QGraphicsScene ( sceneRect, parent ), horScrollBar(0), verScrollBar(0){ } void VMainGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent* event){ @@ -28,3 +28,19 @@ void VMainGraphicsScene::ChoosedItem(qint64 id, Scene::Type type){ void VMainGraphicsScene::RemoveTool(QGraphicsItem *tool){ this->removeItem(tool); } + +qint32 VMainGraphicsScene::getVerScrollBar() const{ + return verScrollBar; +} + +void VMainGraphicsScene::setVerScrollBar(const qint32 &value){ + verScrollBar = value; +} + +qint32 VMainGraphicsScene::getHorScrollBar() const{ + return horScrollBar; +} + +void VMainGraphicsScene::setHorScrollBar(const qint32 &value){ + horScrollBar = value; +} diff --git a/widgets/vmaingraphicsscene.h b/widgets/vmaingraphicsscene.h index 7781cf0b4..e89e18b3c 100644 --- a/widgets/vmaingraphicsscene.h +++ b/widgets/vmaingraphicsscene.h @@ -12,6 +12,12 @@ class VMainGraphicsScene : public QGraphicsScene public: VMainGraphicsScene(); VMainGraphicsScene(const QRectF & sceneRect, QObject * parent = 0); + qint32 getHorScrollBar() const; + void setHorScrollBar(const qint32 &value); + + qint32 getVerScrollBar() const; + void setVerScrollBar(const qint32 &value); + public slots: void ChoosedItem(qint64 id, Scene::Type type); void RemoveTool(QGraphicsItem *tool); @@ -22,6 +28,9 @@ signals: void mouseMove(QPointF scenePos); void mousePress(QPointF scenePos); void ChoosedObject(qint64 id, Scene::Type type); +private: + qint32 horScrollBar; + qint32 verScrollBar; }; #endif // VMAINGRAPHICSSCENE_H