忽略qt中第二个图形视图上场景中的drawForeground()

时间:2014-01-08 09:20:55

标签: c++ qt qgraphicsview qgraphicsscene

我有自己的QGraphicsScene和两个QGraphicView。在QGraphicsScene中我使用

drawForeground(QPainter *painter, const QRectF &rect)

绘制网格的功能。现在我希望网格只在第一个中可见,而不是在第二个视图中......这可能吗?

1 个答案:

答案 0 :(得分:1)

QGraphicsView是一个进入世界的窗口(QGraphicsScene)。当你看到我的窗户外面时,你问的问题就是说下雨了,但是当我透过其中一个看时,我只能下雨吗?!

但是,您可以更改窗帘(!),因此覆盖QGraphicsView的功能,而不是QGraphicsScene。我建议用这个: -

QGraphicsView::drawForeground(QPainter *, const QRectF &);

将此应用仅应用于您要更改的视图。使用两个视图,您需要一个标志来设置要将其应用于哪个视图。例如: -

 void MyGraphicsView::drawForeground(QPainter* painter, const QRectF& rect)
 {
     QGrahicsView::drawForeground(painter, rect);
     if(m_bDrawGrid)
         DrawGrid(); 
 }