我有一个QGraphicsItem
元素(来自QGraphicsItem
的子类),其子句为QGraphicsTextItem
。
问题是paint(...)
的{{1}}方法被无限调用。
以下是我的QGraphicsItem
元素与QGraphicsItem
:
QGraphicsTextItem
我不能将void rectangle_element::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget )
{
painter->drawRoundedRect( -10, -10, 80, 40, 5, 5 );
painter->drawStaticText( -10, -10, QStaticText( "some text" ) );
text_item->setPlainText( "more text" );
}
与setCacheMode
之外的其他旗帜一起使用。
我使用的是Qt 5.6。
更新:
QGraphicsItem::CacheMode::NoCache
是该类的成员,并在初始化列表中初始化。答案 0 :(得分:2)
您在父项的text_item
方法中设置了paint()
的文本,这似乎又触发了父项的重绘,从而创建了一个无限循环。通常,在油漆操作期间更换物品不是一个好主意。请记住,paint()
方法可以高频率调用。
可能有一些事件触发了text_item
的文本更改需求,就像用户交互一样,后者又调用了一个插槽。这是您应该设置文本的点。文本本身的绘制由QGraphicsTextItem
处理。