【问题标题】:C++ Qt QGraphicsWidget backgroundC++ Qt QGraphicsWidget 背景
【发布时间】:2014-04-25 19:49:37
【问题描述】:

我正在制作简单的 2D 游戏(迷宫),并且我正在使用 QGraphicsView、QGraphicsScene 和 QGraphicsGridLayout 将图块管理到网格中。

地图由字符串表示(# 是墙,. 是空字段...)。

所以我正在遍历这个字符串,使用像素图创建标签并将它们插入到网格布局中:

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 窗口)上显示标签时,一切正常。但是插入场景后,它的背景是灰色的。

我试过没有网格层(只有图形视图和场景),但结果是一样的。

有没有办法让场景中的项目背景透明?

【问题讨论】:

    标签: c++ qt 2d


    【解决方案1】:

    您可以将标签的样式表设置为具有透明背景且无边框:

    label->setStyleSheet("background: transparent; border: none");
    

    【讨论】:

    • 非常感谢,它运行良好。我还有一个问题——有没有办法调整窗口(QDialog)的大小,这样 QGraphicsView 就不需要滚动条了?我有带有一些按钮等的窗口和场景中带有矩形的 QGraphicsView。
    • 您可以在 QGraphicsView 中重新实现 resizeEvent( QResizeEvent *event )。见stackoverflow.com/questions/23153365/…
    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2023-04-01
    • 2010-10-01
    • 2014-12-17
    相关资源
    最近更新 更多