QGraphicsView 使用 qpushbutton 放大和缩小

QGraphicsView Zooming in and out with qpushbutton

我有一个 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默认情况下,表示没有缩放变换)。