C++ Qt QGraphicsWidget 背景

标签 c++ qt 2d

我正在制作简单的 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/

相关文章:

c - 将字符串文件读取到多维数组以便稍后访问

c - MPI 输出使用一些 MPI_File_write 在 C 中写入 2d block 循环分布

C++ 类型参数与类型参数不兼容

c++ - 匿名 union 中类成员的初始化

c# - 在托管 DLL 中加载 C++ DLL 时出现 EEFileLoadException

c++ - 防止 QGraphicsItem::itemAt() 在 "Background Item"

c++ - 二维数组的内存问题

c++ - 为 Palm OS 开发类似控制台的应用程序

Qt 根据平台排除子目录项目

c++ - Qt4.8嵌入。使用 QCursor::setPos() 调整鼠标输入会导致光标移动