Qt:强制 QGraphicsItem 更新

根据 Qt Documentation“void QGraphicsItem::update (const QRectF & rect = QRectF())”不会导致立即绘制;相反,它会在控制到达事件循环后安排由 QGraphicsView 处理的绘制请求。这是我的代码:

this->item->setPixmap( QPixmap::fromImage(*coloration->image) );// QGraphicsPixmapItem 
this->item->update();
this->scene->update(); // QGraphicsScene
this->view->update(); // QGraphicsView

并且代码在一个每 100 毫秒调用一次的方法中(并且其中 coloration->image 会改变),但是 Qt 拒绝每 100 毫秒更新一次图像,它只渲染最终图像。那么,我怎样才能立即绘制该项目

stack overflow Qt: Force QGraphicsItem to update
原文答案

答案:

作者头像

您必须阻止您的事件循环,否则您对该项目的实施很糟糕。我无法重现您的问题。

作者头像

这对我有用:ui->graphicsView->viewport()->repaint();

作者头像

添加额外的用法

#include <QGraphicsView> 
QGraphicsView *view = scene()->views().first();
view->viewport()->repaint();