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