Использование QRubberBand для обрезки изображения в Qt

Я хочу использовать резиновую ленту, чтобы выбрать область изображения, затем удалить части изображения за пределами резиновой ленты и отобразить новое изображение. Однако, когда я в настоящее время делаю это, это не обрезает правильные области и дает мне неправильное изображение.

#include "mainresizewindow.h"
#include "ui_mainresizewindow.h"

QString fileName;

MainResizeWindow::MainResizeWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainResizeWindow)
{
    ui->setupUi(this);
    ui->imageLabel->setScaledContents(true);
    connect(ui->actionOpen, SIGNAL(triggered()), this, SLOT(open()));
}

MainResizeWindow::~MainResizeWindow()
{
    delete ui;
}

void MainResizeWindow::open()
{
    fileName = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::currentPath());


    if (!fileName.isEmpty()) {
        QImage image(fileName);

        if (image.isNull()) {
            QMessageBox::information(this, tr("Image Viewer"),
                                 tr("Cannot load %1.").arg(fileName));
            return;
        }

    ui->imageLabel->setPixmap(QPixmap::fromImage(image));
    ui->imageLabel->repaint();
    }
}

void MainResizeWindow::mousePressEvent(QMouseEvent *event)
{
    if(ui->imageLabel->underMouse()){
        myPoint = event->pos();
        rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
        rubberBand->show();
    }
}

void MainResizeWindow::mouseMoveEvent(QMouseEvent *event)
{
    rubberBand->setGeometry(QRect(myPoint, event->pos()).normalized());
}

void MainResizeWindow::mouseReleaseEvent(QMouseEvent *event)
{
    QRect myRect(myPoint, event->pos());

    rubberBand->hide();

    QPixmap OriginalPix(*ui->imageLabel->pixmap());

    QImage newImage;
    newImage = OriginalPix.toImage();

    QImage copyImage;
    copyImage = copyImage.copy(myRect);

    ui->imageLabel->setPixmap(QPixmap::fromImage(copyImage));
    ui->imageLabel->repaint();
}

Любая помощь приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос