gpt4 book ai didi

c++ - 在一个 QGraphicsView 中显示两个图像

转载 作者:行者123 更新时间:2023-11-28 07:04:20 34 4
gpt4 key购买 nike

这是我在这里的第一篇文章,我想在 stackoverflow 上向大家问好 :)

好的,已经欢迎了,现在我指定我遇到的问题。我有一个 QGraphicsView 小部件,我想显示两张带有一些不透明度的图像,但我的代码不起作用,我不知道是什么原因:/

QGraphicsScene *scenaWynikowa = new QGraphicsScene(ui->graphicsViewWynik);
ui->graphicsViewWynik->setScene(scenaWynikowa);
ui->graphicsViewWynik->fitInView(scenaWynikowa->itemsBoundingRect(), Qt::KeepAspectRatio);

//wyświetlenie zdjęcia nr 1
QImage obraz1(s1);
obraz1.scaled(QSize(541,541), Qt::IgnoreAspectRatio, Qt::FastTransformation);
update();
resize(541, 541);
QPixmap mapaPikseli1(n1);
QGraphicsPixmapItem *pixmapItem1 = scenaWynikowa->addPixmap(mapaPikseli1);
QGraphicsOpacityEffect poziomPrzezroczystosci1;
poziomPrzezroczystosci1.setOpacity(0.5);
pixmapItem1->setGraphicsEffect(&poziomPrzezroczystosci1);

//wyświetlenie zdjęcia nr 2
QImage obraz2(s2);
obraz2.scaled(QSize(541,541), Qt::IgnoreAspectRatio, Qt::FastTransformation);
update();
resize(541, 541);
QPixmap mapaPikseli2(n2);
QGraphicsPixmapItem *pixmapItem2 = scenaWynikowa->addPixmap(mapaPikseli2);
QGraphicsOpacityEffect poziomPrzezroczystosci2;
poziomPrzezroczystosci2.setOpacity(0.5);
pixmapItem2->setGraphicsEffect(&poziomPrzezroczystosci2);
pixmapItem2->moveBy(0, 0);

ui->graphicsViewWynik->show();

抱歉不是英文变量的名称,但它对我来说更方便。如果您愿意,我可以解释什么以及为什么变量具有该名称:)也许有人在这段代码中发现了错误并向我解释了我的代码的问题在哪里以及如何解决?

编辑:这是我的新代码。当我在 QGraphicsView 上移动 pix2 的位置时,我可以看到两个图像(pix1 下的 pix2)并且它工作正常,但图像应该具有不透明度级别以产生扩散效果。我应该怎么做?

最佳答案

它不起作用的原因是因为您正在尝试为您的 QGraphicsView 使用两个不同的 QGraphicsSceneQGraphicsView 只能有一个场景。

你应该做的是只创建一个 QGraphicsScene 并在那里添加你的像素图。

QGraphicsScene *scene = new QGraphicsScene(this);
ui->graphicsScene->setScene(scene);
QPixmap pix1(n1);
QGraphicsPixmapItem *pixmapItem1 = scene->addPixmap(pix1);

QPixmap pix2(n2);
QGraphicsPixmapItem *pixmapItem2 = scene->addPixmap(pix2);
pixmapItem2->moveBy(0, pix1.height());

此外,您的 QGraphicsOpacityEffect 对象仅在您创建它的范围内有效。解决此问题的一种方法是使用 new 分配它。

QGraphicsOpacityEffect *opacity1 = new QGraphicsOpacityEffect;
QGraphicsOpacityEffect *opacity2 = new QGraphicsOpacityEffect;
opacity1->setOpacity(0.5);
opacity2->setOpacity(0.2);
pixmapItem1->setGraphicsEffect(opacity1);
pixmapItem2->setGraphicsEffect(opacity2);

关于c++ - 在一个 QGraphicsView 中显示两个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21987818/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com