Russian Qt Forum
Март 29, 2024, 14:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView, ограничение зуммирования  (Прочитано 2124 раз)
INZER
Новичок

Offline Offline

Сообщений: 20


Просмотр профиля
« : Август 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://


« Последнее редактирование: Август 10, 2022, 15:11 от INZER » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.096 секунд. Запросов: 22.