checks-parser/image_redactor/imageredactor.cpp

49 lines
1.2 KiB
C++

#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QPixmap>
#include <QWheelEvent>
#include <QMouseEvent>
#include <QtMath>
#include "imageredactor.h"
ImageRedactor::ImageRedactor(QWidget *parent) : QGraphicsView(parent) {
scene = new QGraphicsScene(this);
setScene(scene);
// Load the image
QPixmap pixmap("image.jpg");
item = new QGraphicsPixmapItem(pixmap);
scene->addItem(item);
// Set the initial zoom level
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
}
void ImageRedactor::wheelEvent(QWheelEvent *event) {
// Zoom in/out
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
double angle = event->angleDelta().y();
double factor = qPow(1.2, angle / 240.0);
scale(factor, factor);
}
void ImageRedactor::mousePressEvent(QMouseEvent *event)
{
// Pan the image
if (event->button() == Qt::LeftButton)
{
setDragMode(QGraphicsView::ScrollHandDrag);
}
}
void ImageRedactor::mouseReleaseEvent(QMouseEvent *event)
{
// Reset the drag mode
if (event->button() == Qt::LeftButton)
{
setDragMode(QGraphicsView::NoDrag);
}
}