Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 显示Pixmap时使用滑块缩放GraphicsView小部件_Qt_Scaling_Qgraphicsview - Fatal编程技术网

Qt 显示Pixmap时使用滑块缩放GraphicsView小部件

Qt 显示Pixmap时使用滑块缩放GraphicsView小部件,qt,scaling,qgraphicsview,Qt,Scaling,Qgraphicsview,我正在尝试使用Graphics view的scale(qreal x,qreal y)方法/函数来缩放Graphics view小部件中的pixmap。下面我附上了我的尝试代码。当我执行程序时,它将显示我的pixmap,但只要我移动水平滑块,pixmap就会消失,图形视图只显示一个空白的白色页面。注释掉的部分都是我尝试过的,但产生了相同的结果。我不完全确定缩放图形视图是否会缩放图形视图中的所有内容,我假设是这样,但从文档中找不到任何具体内容 *需要注意的一点是,我有一个按钮,显示两个不同的像素点

我正在尝试使用Graphics view的scale(qreal x,qreal y)方法/函数来缩放Graphics view小部件中的pixmap。下面我附上了我的尝试代码。当我执行程序时,它将显示我的pixmap,但只要我移动水平滑块,pixmap就会消失,图形视图只显示一个空白的白色页面。注释掉的部分都是我尝试过的,但产生了相同的结果。我不完全确定缩放图形视图是否会缩放图形视图中的所有内容,我假设是这样,但从文档中找不到任何具体内容

*需要注意的一点是,我有一个按钮,显示两个不同的像素点,即使在移动滚动条时显示白色屏幕,如果我按下该按钮,它仍会更新y轴滚动条(因为一个像素点略大于图形小部件),但仍会显示一个空白的白色图形视图

*PixMapView是图形视图小部件的名称

  void CanvasTest::on_horizontalSlider_valueChanged(int value)
{
    //int scaleX = value/(ui->horizontalSlider->maximum())*2;
    //Graph is updating and Y scroll bar is updating to show for it
    //int scaleY = ui->verticalSlider->value();
    QGraphicsScene* scene = ui->PixMapView->scene();
    ui->PixMapView->scale(value/10, 1);

    ui->PixMapView->setScene(scene);
    ui->PixMapView->show();
}

使用整数存在截断问题,此代码还使用静态变量跟踪以前的刻度值

static float valueTracker = 1;\
static float valueTracker1 = 1;
static int count = 1;

bool order;
if (count%2 == 1)
{
    valueTracker = newSliderValue;
    order = 0;
}
else
{
    valueTracker1 = newSliderValue;
    order = 1;
}
if(valueTracker == valueTracker1 || valueTracker == 0 || valueTracker1 == 0)
{
    count++;
    return;
}
else if(order == 0)
{
    ui->PixMapView->scale(((valueTracker/valueTracker1)), 1);
}

else if(order == 1)
{
   ui->PixMapView->scale(((valueTracker1/valueTracker)), 1);
}

count++;