其实这个问题,原因是QGraphicsItem的boundingRect的范围不在当前的View范围内,当然不会刷新,特别是自定义的一些Item,特别要注意自己的boundingrect是否在准确的位置,所以其实是boundingrect没有自动更新位置导致的。
当遇到相似的问题时,不妨把boundingrect画出来就可以见分晓了。
下面是我们的代码:
#ifndef LIDARPOINTS_H
#define LIDARPOINTS_H
#include <QColor>
#include <QGraphicsItem>
#include <QImage>
class Lidarpoints : public QGraphicsItem
{
public:
Lidarpoints(const QColor &color, int x, int y);
Lidarpoints(/*const QImage image*/);
void setLidarData(QPoint pos, std::vector<QPoint>& data);
QRectF boundingRect() const Q_DECL_OVERRIDE;
QPainterPath shape() const Q_DECL_OVERRIDE;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget) Q_DECL_OVERRIDE;
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE;
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE;
void mouseReleaseEvent(QGraphicsSceneMouseEvent

最低0.47元/天 解锁文章
976

被折叠的 条评论
为什么被折叠?



