未调用 QGraphicsItem 绘制
Posted
技术标签:
【中文标题】未调用 QGraphicsItem 绘制【英文标题】:QGraphicsItem paint not called 【发布时间】:2013-05-11 13:15:41 【问题描述】:我使用QGraphicsView
、QGrapichsScene
和QGraphicsItem
来绘制一些图表。我已经实现了QGraphicsItem::paint
函数来绘制文本(图表的值),但它并不是每次都必须绘制新的东西时被调用。我的paint
函数
void CLabelItem::paint(QPainter *painter,
const QStyleOptionGraphicsItem* /*option*/, QWidget* /*widget = 0*/)
if ( GetValue() < 0 )
return;
painter->drawText(boundingRect(), m_value.toString());
所以我的问题是 - 为什么不能调用 QGraphicsItem::paint
以及如何才能调用它?
【问题讨论】:
【参考方案1】:您需要从修改m_value
变量的函数中调用QGraphicsItem::update()
以触发重绘。
【讨论】:
感谢您的回答,它成功了!但是现在还有另一个问题——QGraphicsItem::paint
并没有被所有项目调用,尽管它们都有正确的边界矩形。你也可以帮忙吗?
@nabroyan 这些项目的边界矩形是否在重绘之间改变?因为在这种情况下您需要调用prepareGeometryChange()
(除了update()
)。
我知道了,计算边界矩形时出错了。【参考方案2】:
通常在调用paintEvent
时绘制Qt 图形项目,然后您可以在paint
函数内处理绘制。
【讨论】:
以上是关于未调用 QGraphicsItem 绘制的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4 - 拖动后 QGraphicsItem 位置未正确映射到场景中
从 QGraphicsItem 派生类绘制 QGraphicsScene