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

  • 在场景中,我有多个圆作为 QGraphicsItem 实现
  • 边界返回该圆圈周围的正方形。
  • 方法“shape”未被覆盖。

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

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

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

有帮助吗?

解决方案

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top