2014-03-04 136 views
1

我有一個QGraphicsScene。在那個場景中,我有一個反面,我想在那個反面裏設置不同的顏色。在qt中設置背景顏色

我的代碼是

QGraphicsScene* scene; 
scene = new QGraphicsScene(this); 
QGraphicsView* view; 
view = new QGraphicsView(this); 
view->setGeometry(x, y, mapColumns * min_height_size, mapRows * min_width_size); 
view->setScene(scene); 

for(int i=0; i<mapRows; ++i){ 
    for(int j=0; j<mapColumns; ++j){ 
     if (j == 0) { 
      y = 20; 
     } 
     if(map.getCell(i,j).getTerrain() == Cell::forest) { 
      scene->addRect(x,y,min_height_size,min_width_size); 
      scene->setPalette(Qt::green); //but it didn't work 
      y += min_width_size; 
     } else if(map.getCell(i,j).getTerrain() == Cell::mountain){ 
      scene->addRect(x,y,min_height_size,min_width_size); 
      scene->setPalette(Qt::blue); //but it didn't work 
      y += min_width_size; 
     } else if(map.getCell(i,j).getTerrain() == Cell::plain) { 
      scene->addRect(x,y,min_height_size,min_width_size); 
      scene->setPalette(Qt::yellow); //but it didn't work 
      y += min_width_size; 
     } 
     view->setDragMode(QGraphicsView::ScrollHandDrag); 
    } 
    x += min_height_size; 
} 
} 
+0

其實,你需要設置rects的顏色,而不是背景..請確認。 –

+0

您嘗試的任何代碼? –

回答

0

可以使用setBrush()函數來設置顏色。

QGraphicsRectItem *rect_item1 = scene->addRect(100, 100, 50, 50); 
rect_item1->setBrush(Qt::yellow); 
QGraphicsRectItem *rect_item2 = scene->addRect(200, 250, 50, 50); 
rect_item2->setBrush(QColor(100,50,200)); 
+0

非常感謝,它的工作原理)))) – Mary

+0

你能告訴我如何設置不同的QPixmap對象到那些rects中嗎? – Mary

+0

@Mary See [''QGraphicsPixmapItem'](http://qt-project.org/doc/qt-5.0/qtwidgets/qgraphicspixmapitem.html)。將您的'QGraphicsRectItem'設置爲父項。 – thuga