【问题标题】:QGraphicsItem paint not called未调用 QGraphicsItem 绘制
【发布时间】:2013-05-11 13:15:41
【问题描述】:

我使用QGraphicsViewQGrapichsSceneQGraphicsItem 来绘制一些图表。我已经实现了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 以及如何才能调用它?

【问题讨论】:

    标签: c++ qt qgraphicsitem


    【解决方案1】:

    您需要从修改m_value 变量的函数中调用QGraphicsItem::update() 以触发重绘。

    【讨论】:

    • 感谢您的回答,它成功了!但是现在还有另一个问题——QGraphicsItem::paint 并没有被所有项目调用,尽管它们都有正确的边界矩形。你也可以帮忙吗?
    • @nabroyan 这些项目的边界矩形是否在重绘之间改变?因为在这种情况下您需要调用prepareGeometryChange()(除了update())。
    • 我知道了,计算边界矩形时出错了。
    【解决方案2】:

    通常在调用paintEvent 时绘制Qt 图形项目,然后您可以在paint 函数内处理绘制。

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 2016-02-29
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      相关资源
      最近更新 更多