放大和缩小与qpushbutton

QGraphicsView Zooming in and out with qpushbutton

本文关键字:qpushbutton 缩小 放大      更新时间:2023-10-16

我有一个QGraphicsScene,我想用qpushbutton放大(放大和缩小),我有这个代码:

void fonction(){
        Scene = new QGraphicsScene(this);
        ui->graphicsView->setScene(Scene);
        QPen Pen ;
        QBrush Brush(Qt::red) ;
        Pen.setWidth(5);
        ellipse = Scene->addEllipse(2,2,30,30,Pen,Brush);
}

怎么做?我试过了:

void HomePage::on_pushButton_4_clicked()
{
    if(Zoom!=10 ){
        Zoom=Zoom+0.1 ;
       }
    ui->graphicsView->show();
}

您还没有使用Zoom变量对QGraphicsView做任何事情。您需要调用:

ui->graphicsView->scale (Zoom, Zoom);

这将改变缩放级别。该方法根据Zoom的值缩放当前转换。您的代码没有显示Zoom的起始值,但我猜想您希望它的起始值为1。如果它从0开始,那么第一个变焦级别是0.1,那么你的场景将在第一次按下按钮时变焦很远。

为了控制这一点,您可能需要使用ui->graphicsView->transform()来获取当前的转换矩阵,并查看当前缩放级别的m11和m22值。

同样,scale方法缩放当前转换,所以每次调用它时,您都是从当前缩放因子缩放,而不是原始值(默认值为1,表示没有缩放转换)。