diff --git a/src/canvas.cpp b/src/canvas.cpp index 5ceec50..5eec4fe 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -242,5 +242,18 @@ void Canvas::drawBackground(QPainter *painter, const QRectF &rect) } } +void Canvas::Zoom(int val) +{ + qreal sf = 0.0; + if(val<6){ + sf = 1.0 / val; + } + else{ + sf = val - 5; + } + d->view->matrix().reset(); + d->view->scale(sf,sf); +} + } // namespace Logicsim diff --git a/src/canvas.h b/src/canvas.h index ac88b30..9a98fb4 100644 --- a/src/canvas.h +++ b/src/canvas.h @@ -48,6 +48,9 @@ class Canvas : public QGraphicsScene void drawBackground(QPainter *painter, const QRectF &rect); +public Q_SLOTS: + void Zoom(int val); + private: class Private; Private* const d; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4a07fc4..cc17c20 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -61,6 +61,11 @@ MainWindow::MainWindow(QWidget *parent) ui->frameGridLayout->addWidget(d->tabWidget); d->tabWidget->setTabsClosable(true); + ui->horizontalSlider->setRange(1,11); + //ui->horizontalSlider->setSingleStep(1); + ui->horizontalSlider->setFocusPolicy(Qt::StrongFocus); + ui->horizontalSlider->setTickPosition(QSlider::TicksBothSides); + // Connection connect(ui->actionNew, SIGNAL(triggered(bool)), this, SLOT(newFile())); @@ -132,6 +137,7 @@ Canvas* MainWindow::newFile() connect(this, SIGNAL(notLastTabClosed(int)), d->workspaceTab, SLOT(updateComponents())); + } d->tabsCount++; int tabIndex = d->tabWidget->addTab(c->view(), "New Circuit"); @@ -184,6 +190,8 @@ void MainWindow::changeManager(int index) void MainWindow::tabChanged(int index) { d->activeTabIndex = index; + connect(ui->horizontalSlider,SIGNAL(valueChanged(int)), + d->canvases[d->activeTabIndex],SLOT(Zoom(int))); } void MainWindow::tabAboutToBeClosed(int index) diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 59da5d4..736e40c 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -86,6 +86,13 @@ + + + + Zoom + + + @@ -103,7 +110,7 @@ 0 0 1280 - 28 + 25