如题。我的对象很少,我想为它们设置图形并相互重叠。我正在设置 18 个正方形(地形)。我要添加到这个地形图形中:
setPixmap(QPixmap(":Graphics/Terrain"));
像这样。
然后我想给它添加框架。我有 4 个格式为 .png 的文件,每个文件都是 200x200px。第一个是 terrain.png - 它是一个绿色的正方形,第二个和第三个是框架,大约 20px 宽,有一个透明的中心(带 alpha channel ),最后一个 .png 文件是 City.png,在 City.png 的左角,有是一个小图形,其余部分是透明的(alpha channel )。当我尝试以与 terrain.png 相同的方式设置框架时:
setPixmap(QPixmap(":Graphics/Frame"));
它覆盖了所有 terrain.png 图形,尽管 frame1.png 的中心是透明的。
此外,我想添加一些其他对象,例如 City.png。怎么做?除了使用这个 setPixmap 函数外,Mayby 还存在一些不同的方法吗?
最佳答案
当像这样使用时,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
重叠。
关于c++ - 如何在qt中做重叠的自定义项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385743/