Название: QGraphicsView, ограничение зуммирования Отправлено: INZER от Август 10, 2022, 14:38 Добрый день, первый раз сталкиваюсь с рисованием в Qt
Подскажите пожалуйста как задать рамки для зума. Само увеличение и уменьшение реализовано довольно тривиально: Код: void GraphicsView::wheelEvent(QWheelEvent *e) { if (e->modifiers() & Qt::ControlModifier) { if (e->angleDelta().y() > 0) view->zoomIn(); else view->zoomOut(); e->accept(); } else { QGraphicsView::wheelEvent(e); } } // ----------------------------------------------------------- class View : public QFrame { Q_OBJECT public: explicit View(const QString &, QWidget *parent = nullptr); QGraphicsView *view() const; .... } void View::setupMatrix() { qreal scale = qPow(qreal(2), (zoomValue - 250) / qreal(50)); QTransform matrix; matrix.scale(scale, scale); matrix.rotate(0); graphicsView->setTransform(matrix); setResetButtonEnabled(); } void View::zoomIn() { if (zoomValue + ZOOMDELTAVALUE <= ZOOMMAX) { zoomValue += 6; setupMatrix(); } } void View::zoomOut() { if (zoomValue - ZOOMDELTAVALUE >= ZOOMMIN) { zoomValue -= 6; setupMatrix(); } } // ----------------------------------------- scene = new QGraphicsScene(this); View *view = new View("", this); view->view()->setScene(scene); scene->addPixmap(QPixmap(":/icons/images/russia.png")); Как сделать так, чтобы нельзя было уменьшить меньше, чем минимальный размер одной из сторон установленной на сцену картинки, ну и увеличить, например более чем на одну треть от минимальной стороны установленной картинки. Чтоб не было такой ситуации: http://(https://i.ibb.co/tw0jrsP/2022-08-10-14-30-56.png) (https://ibb.co/0p04bMV) |