非常简单的Qt GUI应用程序:
在我添加的paint()方法中出现问题:
if (isSelected()) {
painter->drawRect(re);
}
选择很好,但取消选择不会导致重绘。在日志级别,我可以看到该项目确实丢失了选择标志。 从itemChange调用update()也没用。 提前感谢您的任何建议。
答案 0 :(得分:0)
10天后我回到了这个问题,发现我的QGraphicsItem构造了
setCacheMode(DeviceCoordinateCache);
我的天啊!愚蠢的错误,当删除此行时(默认情况下使用QGraphicsItem :: NoCache)选择重绘得很好。
答案 1 :(得分:0)
您还可以尝试使用setViewportUpdateMode(QGraphicsView :: FullViewportUpdate)将默认的QGraphicsView :: MinimalViewportUpdate更改为FullViewportUpdate;
或者你可以调用scene() - > update();从该项目安排重新绘制。
至少在我不断更改项目上的QGraphicsItem :: ItemHasNoContents标志时,其中一个是必需的。