0

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

  • 在现场我有多个圆圈实现为 QGraphicsItem
  • boundingRect 返回围绕这个圆的正方形。
  • 方法“形状”未被覆盖。

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

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

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

4

2 回答 2

0

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

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

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

于 2010-06-10T11:47:17.153 回答
0

10 天后,我回到这个问题,发现我的 QGraphicsItem 是用 setCacheMode(DeviceCoordinateCache); OMG 构建的!愚蠢的错误,当这条线被删除时(默认使用 QGraphicsItem::NoCache),选择被重新绘制得很好。

于 2009-10-29T15:43:55.727 回答