Добрый день, первый раз сталкиваюсь с рисованием в 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://