从qt中第二个图形视图的场景中忽略drawForeground()
Posted
技术标签:
【中文标题】从qt中第二个图形视图的场景中忽略drawForeground()【英文标题】:Ignore drawForeground() from the scene on the 2nd graphicsview in qt 【发布时间】:2014-01-08 09:20:55 【问题描述】:我有自己的 QGraphicsScene 和两个 QGraphicView。在 QGraphicsScene 我使用
drawForeground(QPainter *painter, const QRectF &rect)
绘制网格的函数。现在我希望网格只在第一个视图中可见,而在第二个视图中不可见……这可能吗?
【问题讨论】:
【参考方案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();
【讨论】:
谢谢,这行得通。我不敢相信我没有在视图中搜索 drawForeGround() ..以上是关于从qt中第二个图形视图的场景中忽略drawForeground()的主要内容,如果未能解决你的问题,请参考以下文章