非常简单的 Qt GUI 应用程序:
- 在现场我有多个圆圈实现为 QGraphicsItem
- boundingRect 返回围绕这个圆的正方形。
- 方法“形状”未被覆盖。
在我添加的 paint() 方法中出现问题:
if (isSelected()) {
painter->drawRect(re);
}
选择被很好地绘制,但取消选择不会导致重绘。在日志级别,我可以看到该项目确实丢失了选择标志。从 itemChange 调用 update() 也是没用的。提前感谢您的任何建议。
非常简单的 Qt GUI 应用程序:
在我添加的 paint() 方法中出现问题:
if (isSelected()) {
painter->drawRect(re);
}
选择被很好地绘制,但取消选择不会导致重绘。在日志级别,我可以看到该项目确实丢失了选择标志。从 itemChange 调用 update() 也是没用的。提前感谢您的任何建议。
您还可以尝试使用 setViewportUpdateMode(QGraphicsView::FullViewportUpdate) 将默认 QGraphicsView::MinimalViewportUpdate 更改为 FullViewportUpdate;
或者你可以调用scene()->update(); 从项目安排重绘。
至少在我不断更改项目上的 QGraphicsItem::ItemHasNoContents 标志时需要其中一个。
10 天后,我回到这个问题,发现我的 QGraphicsItem 是用
setCacheMode(DeviceCoordinateCache);
OMG 构建的!愚蠢的错误,当这条线被删除时(默认使用 QGraphicsItem::NoCache),选择被重新绘制得很好。