首页 > 解决方案 > 修剪后,留下一个矩形

问题描述

我想裁剪上传到qgraphicsview. 为此,我按住鼠标按钮qgraphicsview并选择要保留的片段。这将绘制一个矩形,显示图像将保留多少。

加载后我得到以下信息:

在此处输入图像描述

修剪后:

在此处输入图像描述

你能告诉我如何在裁剪后删除矩形吗?

编码:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->dstGraphicsView->setScene( &scSrc ) ;
    ui->dstGraphicsView->setScene( &scDst ) ;

    connect(ui->srcGraphicsView->verticalScrollBar(), SIGNAL(sliderMoved(int)), ui->dstGraphicsView->verticalScrollBar(),  SLOT(setValue(int)));
    connect(ui->dstGraphicsView->verticalScrollBar(), SIGNAL(sliderMoved(int)), ui->srcGraphicsView->verticalScrollBar(),SLOT(setValue(int)));

    connect(ui->srcGraphicsView->horizontalScrollBar(), SIGNAL(sliderMoved(int)), ui->dstGraphicsView->horizontalScrollBar(), SLOT(setValue(int)));
    connect(ui->dstGraphicsView->horizontalScrollBar(), SIGNAL(sliderMoved(int)), ui->srcGraphicsView->horizontalScrollBar(), SLOT(setValue(int)));
}

void MainWindow::on_open_im_clicked()
{
    QString fp = QFileDialog::getOpenFileName() ;

    nPixSrc = new nGPixmapItem( QPixmap(fp)  ) ;
    nPixDst = new nGPixmapItem( QPixmap(fp)  ) ;

    scSrc.addItem( nPixSrc ) ;
    scDst.addItem( nPixDst ) ;

    mScene1 = new PaintScene(this);
    ui->srcGraphicsView->setScene(mScene1);
    ui->dstGraphicsView->setScene(mScene1);

    connect(mScene1, &PaintScene::mouseReleased, this, &MainWindow::obrezka);
    mScene1->addItem(nPixSrc);
}

void MainWindow::obrezka()
{
    QRect rect(mScene1->mx,mScene1->my, mScene1->mwidth, mScene1->mheigh);
    QPixmap cropped = nPixSrc->pixmap().copy(rect);

    nPixSrc->setPixmap(cropped);
    nPixDst->setPixmap(cropped);
}

标签: c++qt

解决方案


推荐阅读