c++ - 如何在qt中做重叠的自定义项目?

标签 c++ qt

如题。我的对象很少,我想为它们设置图形并相互重叠。我正在设置 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();

如您所料,透明的 itemBitemA 重叠。

关于c++ - 如何在qt中做重叠的自定义项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385743/

相关文章:

c++ - 用指针翻转数组

c++ - 使用 ->GetString (""时的段错误)在一个单独的类中

java - 短路评估可以触发竞争条件吗?

c++ - 在读取包含空白表格的 .txt 文件时需要帮助吗?

Qt 的 moc 导致 "undefined reference to:"错误

c++ - 在类方法之间传递 QImage 对象

c++ - CudaMalloc 分配内存时失败

qt - QML 中的 64 位整数

qt - QML 中 QString::arg() 的等价物是什么

qt - 从qt项目中引用dll文件