2014-04-25 21 views
1

我正在製作簡單的2D遊戲(迷宮),我使用QGraphicsView,QGraphicsScene和QGraphicsGridLayout將瓷磚管理爲網格。C++ Qt QGraphicsWidget背景

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

所以我要通過這個字符串,像素圖製作標籤,並將其插入到網格佈局:

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。它工作正常,但我有pixmaps透明背景的問題。每個像素圖都由一些形狀和透明背景組成。當我嘗試在主窗口小部件(QDialog窗口)上顯示標籤時,一切正常。但插入場景後,其背景是灰色的。

我試過沒有網格層(只有圖形視圖和場景),但結果是一樣的。

有什麼辦法可以設置場景項目的背景透明嗎?

回答

0

您可以設置標籤的樣式有透明背景,無邊框:

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

非常感謝,它完美的作品。我還有一個問題 - 有沒有辦法調整窗口大小(QDialog),所以QGraphicsView不需要滾動條?我有一些按鈕等窗口和QGraphicsView與場景中的矩形。 – mikeek

+0

您可以在QGraphicsView中重新實現resizeEvent(QResizeEvent *事件)。請參閱http://stackoverflow.com/questions/23153365/qgraphicsview-scale-with-windowsize/23153512#23153512 – Nejat