我正在制作简单的 2D 游戏(迷宫),我正在使用 QGraphicsView、QGraphicsScene 和 QGraphicsGridLayout 来管理网格中的图 block 。
map 用字符串表示(#是墙,.是空域...)。
所以我要遍历这个字符串,用像素图创建标签并将它们插入到网格布局中:
QLabel *label;
QGraphicsProxyWidget *widget;
...
for (..) {
for (..) {
label = new QLabel();
label->setPixmap(QPixmap(":/new/images/img/w.png"));
widget = scene->addWidget(label);
layout->addItem(widget, i, j);
}
}
场景是QGraphicsScene,布局是QGraphicsGridLayout。它工作正常,但我对像素图的透明背景有疑问。每个像素图由一些形状和透明背景组成。当我尝试在主小部件(QDialog 窗口)上显示标签时,一切正常。但是插入到场景中后,它的背景是灰色的。
我试过没有网格层(只有图形 View 和场景)但结果是一样的。
有什么方法可以将场景项目的背景设置为透明吗?
最佳答案
可以设置标签的样式表为背景透明无边框:
label->setStyleSheet("background: transparent; border: none");
关于C++ Qt QGraphicsWidget 背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290878/