如何使用QT显示部分图像?

Pau*_*acó 5 c++ qt

所以,这是我的问题:我有这个非常大的形象,我只想展示它的一个特定部分.用户按下特定键后,我希望图像移动,显示其中的另一部分.从图像的一部分到另一部分的过渡必须是平滑的,动画的.

我尝试使用QLabel来显示图像,但它总是显示图像的中心,我真的不知道如何制作动画.你们会建议什么?

pne*_*zis 4

有趣的问题。这是我刚刚测试过的东西,似乎有效。

添加QGraphicsView尺寸为要显示的图像部分的尺寸,例如 100x100。创建一个QGraphicsScene并将其添加到视图中:

QGraphicsScene* pScene = new QGraphicsScene(this);
ui->graphicsView->setScene(pScene);
Run Code Online (Sandbox Code Playgroud)

现在将您的图像添加到场景中。就我而言,我的资源文件中有一个图像。诀窍是将 设置sceneRect为您想要显示的位置。我想从 0,300 开始显示图像的 100x100 部分:

pItem = pScene->addPixmap(QPixmap::fromImage(QImage(":/photos/image")));
pScene->setSceneRect(0,300,100,100);
Run Code Online (Sandbox Code Playgroud)

为了测试平滑移动,我添加了一个按钮,单击该按钮会触发一个名为“移动”的插槽。该插槽仅更新sceneRect. 在我的简单示例中,我只是将图像向右移动 100 像素。在现实场景中,您还可以对角或垂直移动它并检查图像限制。

void move()
{
    for (unsigned i=currentX; i<currentX + 100; i++)
    {
    ui->graphicsView->scene()->setSceneRect(i,300,100,100);
    qApp->processEvents();
    }
    currentX += 100;
}
Run Code Online (Sandbox Code Playgroud)

注意currentX变量。无非就是最后一个图像的位置。另外,我们必须调用processEvents才能“看到”图像平滑移动。