如何在qt中执行重叠的自定义项

How to do overlapping custom items in qt?

本文关键字:重叠 自定义 执行 qt      更新时间:2023-10-16

就像标题一样。我的对象很少,我想为它们设置图形并相互重叠。我正在设置 18 个正方形(地形(。我正在添加这个地形图形:

setPixmap(QPixmap(":Graphics/Terrain"));是这样的。

然后我想给它添加框架。我有 4 个格式.png的文件,每个文件都是 200x200 像素。第一个是地形.png - 它是一个绿色的正方形,第二个和第三个是框架,大约 20px 宽,中心透明(带有 alpha 通道(,最后一个.png文件是 City.png,在 City.png 的左上角,有一个小图形,其余是透明的(alpha 通道(。当我尝试以与地形相同的方式设置框架时.png:

setPixmap(QPixmap(":Graphics/Frame"));

它涵盖了所有地形.png图形,尽管 frame1.png 的中心是透明的。

此外,我想添加一些其他对象,例如城市.png。怎么办?Mayby除了使用这个setPixmap函数之外,还存在一些不同的方式?

当像这样使用时,setPixmap方法似乎工作得很好:

QGraphicsScene* scene = new QGraphicsScene();
QGraphicsPixmapItem* itemA = new QGraphicsPixmapItem();
itemA->setPixmap(QPixmap(":/NonTransparentImage.png"));
scene->addItem(itemA);
QGraphicsPixmapItem* itemB = new QGraphicsPixmapItem();
itemB->setPixmap(QPixmap(":/TransparentImage.png"));
scene->addItem(itemB);
QGraphicsView* view = new QGraphicsView(scene);
view->show();

如您所料,透明itemB重叠itemA