在显示像素图时使用滑块缩放 GraphicsView 小部件
Scaling GraphicsView Widget With Sliders While displaying a Pixmap
我正在尝试使用 scale(qreal x, qreal y) method/function 图形视图来缩放图形视图小部件中的像素图。下面我附上了我尝试的代码。当我执行程序时,它会显示我的像素图,但只要我移动水平滑块,像素图就会消失,图形视图只显示一个空白的白页。注释掉的部分是我尝试过但产生相同结果的所有东西。我不完全确定缩放图形视图是否会缩放图形视图中的所有内容,我假设是这样,但无法从文档中找到任何具体内容。
*需要注意的一件事是我有一个显示两个不同像素图的按钮,即使在移动滚动条时出现白屏之后,如果我按下按钮它仍然会更新 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++;
我正在尝试使用 scale(qreal x, qreal y) method/function 图形视图来缩放图形视图小部件中的像素图。下面我附上了我尝试的代码。当我执行程序时,它会显示我的像素图,但只要我移动水平滑块,像素图就会消失,图形视图只显示一个空白的白页。注释掉的部分是我尝试过但产生相同结果的所有东西。我不完全确定缩放图形视图是否会缩放图形视图中的所有内容,我假设是这样,但无法从文档中找到任何具体内容。
*需要注意的一件事是我有一个显示两个不同像素图的按钮,即使在移动滚动条时出现白屏之后,如果我按下按钮它仍然会更新 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++;