从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()的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13 中第二个视图控制器的导航栏按钮对齐错误

QT 图形场景/视图 - 用鼠标移动

约束两个视图以使用视觉格式填充屏幕时忽略第二个视图的大小

如何将两个表与 SQL Server 中第二个表中引用同一列的两列连接起来

根据 mongodb 中第一个表的结果从第二个表加载数据

分组 UITableView 中第一个和第二个单元格之间的 1 个像素间隙