在调用 QGraphicsItem::paint 之前

Posted

技术标签:

【中文标题】在调用 QGraphicsItem::paint 之前【英文标题】:Before QGraphicsItem::paint will be called 【发布时间】:2013-05-11 20:59:27 【问题描述】:

我正在做一个项目,我使用QGraphicsSceneQGraphicsViweQGraphicsItem。我想在调用QGraphicsItem::paint 之前做一些计算。

那么有没有办法在QGraphicsItem::paint 被调用之前做点什么?

提前谢谢你!

【问题讨论】:

paint函数的开头这样做会有什么不同? @cmannett85 - 它有缺点,例如每次实现paintEvent 时都必须包含它。可悲的是,似乎没有太多选择。也许继承QGraphicsScene... 我可以在paint 中这样做,但这不会有效,每次调用paint 时我都必须这样做。这就是为什么我正在寻找另一种方式。 如果之前的绘画调用已经完成了计算(例如使用“脏”标志),你不能跳过计算吗? 是的,这也是一个解决方案! 【参考方案1】:

QGraphicsView 具有函数showEvent(),如果你覆盖它,它将在项目的绘制函数之前被调用。你可以通过调用scene()函数来获取你的场景,之后你就可以获取所有的物品了。

【讨论】:

以上是关于在调用 QGraphicsItem::paint 之前的主要内容,如果未能解决你的问题,请参考以下文章

在webservice的一次调用中能循环调用接口方法

返回函数调用与仅在递归期间再次调用函数有啥区别?

在 foreach 中调用类仅最后一次调用有效

在 JSX 中调用 javascript 函数:为啥在没有 () 的情况下调用函数?

c语言中,在一个自定义函数里面只能调用一个自定义函数吗?可以调用多个吗?如果可以怎么调用?

为啥 C# 编译器会在最后一个方法调用是条件调用时删除一串方法调用?