Transform 转换用作QGraphicsPacityEffect的QPixmap

Transform 转换用作QGraphicsPacityEffect的QPixmap,transform,translate,qpixmap,qgraphicseffect,Transform,Translate,Qpixmap,Qgraphicseffect,我有三张图片,其中两张是全彩的,并且是重叠的(即一张在另一张上面,所以你只能看到上面的一张)。第三张图片有黑色部分和透明部分,使用QGraphicsPacityEffect()作为不透明度遮罩,并应用于用于显示顶部图像的QLabel。我想随时间移动用作不透明度遮罩的图像,以便根据不透明度遮罩图像的位置显示顶部和底部图像的不同部分,但我似乎无法使其正常工作: QPixmap mask_img("path to mask image"); QGraphicsOpacityEffe

我有三张图片,其中两张是全彩的,并且是重叠的(即一张在另一张上面,所以你只能看到上面的一张)。第三张图片有黑色部分和透明部分,使用QGraphicsPacityEffect()作为不透明度遮罩,并应用于用于显示顶部图像的QLabel。我想随时间移动用作不透明度遮罩的图像,以便根据不透明度遮罩图像的位置显示顶部和底部图像的不同部分,但我似乎无法使其正常工作:

QPixmap mask_img("path to mask image");
QGraphicsOpacityEffect *opacity_effect = new QGraphicsopacityEffect();
opacity_effect->setOpacityMask(mask_img.scaled(1800, 310);

QImage top_img("path to top image");
QLabel *top_img_label = new QLabel
top_img_label->setGraphicsEffect(opacity_effect);
top_img_label->setAlignment(Qt::AlignCenter);
top_img_label->setPixmap(QPixmap::fromImage(top_img).scaled(900, 310);

QImage bottom_img("path to bottom image");
QLabel *bottom_img_label = new QLabel
bottom_img_label->setGraphicsEffect(opacity_effect);
bottom_img_label->setAlignment(Qt::AlignCenter);
bottom_img_label->setPixmap(QPixmap::fromImage(bottom_img).scaled(900, 310);
这确实有效(即,它显示应用于顶部图像的遮罩图像的透明部分“未遮罩”的底部图像部分),但是我也希望随着时间移动遮罩

我尝试过应用.transformed(QTransform().translate(x\u move,y\u move)),但这似乎对任何事情都没有效果。此外,如果缩放遮罩图像使其小于两个图像,则会重复遮罩