使用QSlider放大和缩小Qgraphicsscene

时间:2016-10-15 21:48:47

标签: c++ qt qgraphicsview qgraphicsscene

我有一个QGraphicsScene我希望使用QSlider进行缩放(进出),我有以下代码:

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_verticalSlider_valueChanged(int value)
{
    float z ;
    if(value==0 )
        z=0.1;
    else
        z  = value*0.01;

    Scene->update();
    ui->graphicsView->transform();
    ui->graphicsView->scale(z,z);
}

QSlider的间隔是[0.1 - > 1] 我的问题是缩小不起作用,为什么? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你的问题是控制场景视图的矩阵不会重置滑块的每次更新,它只是一个运行的乘法。一个简单的方法是将当前值保存在HomePage的成员变量中(让我们称之为m_current_scale)并在执行另一个变换之前撤消缩放。

Configuration