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窗口)上顯示標籤時,一切正常。但插入場景後,其背景是灰色的。
我試過沒有網格層(只有圖形視圖和場景),但結果是一樣的。
有什麼辦法可以設置場景項目的背景透明嗎?
非常感謝,它完美的作品。我還有一個問題 - 有沒有辦法調整窗口大小(QDialog),所以QGraphicsView不需要滾動條?我有一些按鈕等窗口和QGraphicsView與場景中的矩形。 – mikeek
您可以在QGraphicsView中重新實現resizeEvent(QResizeEvent *事件)。請參閱http://stackoverflow.com/questions/23153365/qgraphicsview-scale-with-windowsize/23153512#23153512 – Nejat