QGraphicsItem取消选择重绘问题

时间:2009-10-19 16:21:22

标签: qt qgraphicsitem scene unselect

非常简单的Qt GUI应用程序:

  • 在场景中,我有多个圈子实现为QGraphicsItem
  • boundingRect返回square 这个圈子。
  • 方法'shape'未被覆盖。

在我添加的paint()方法中出现问题:

if (isSelected()) {
    painter->drawRect(re);
}

选择很好,但取消选择不会导致重绘。在日志级别,我可以看到该项目确实丢失了选择标志。 从itemChange调用update()也没用。 提前感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

10天后我回到了这个问题,发现我的QGraphicsItem构造了 setCacheMode(DeviceCoordinateCache);  我的天啊!愚蠢的错误,当删除此行时(默认情况下使用QGraphicsItem :: NoCache)选择重绘得很好。

答案 1 :(得分:0)

您还可以尝试使用setViewportUpdateMode(QGraphicsView :: FullViewportUpdate)将默认的QGraphicsView :: MinimalViewportUpdate更改为FullViewportUpdate;

或者你可以调用scene() - > update();从该项目安排重新绘制。

至少在我不断更改项目上的QGraphicsItem :: ItemHasNoContents标志时,其中一个是必需的。