QT更改每个帧的PixMap

QT Changing pixmap each frame

本文关键字:PixMap QT      更新时间:2023-10-16

我刚刚开始在QT工作,我正在尝试更改每个帧的像素颜色的一些像素颜色。

QGraphicsScene *graphic = new  QGraphicsScene(this);
QPixmap LifeMap=QPixmap(QPixmap::fromImage(LifeGrid));

这是我的图形场景和我的pixmap声明。

因此,在一个函数中,我调用每个帧我使用此代码线来更新PixMap

graphic->addPixmap(QPixmap::fromImage(LifeGrid));

它可以工作,但是每隔几秒钟我就有越来越少的RAM内存。记忆充满后,我的计算机停止工作,我无能为力。(我想这与AddPixMap函数有关,因为它声明了一个全新的PixMap)

因此,是否有一个功能可以允许我仅更新此图形或更改PixMap?

预先感谢!

是否有一个功能可以使我只能更新此图形或更改PixMap?

是。您必须使用单个PixMap项目,而不是每次更改PixMap时创建新的项目。您也可以按值来保存场景和项目,保存额外的间接层,并利用C 编译器自动为您完成所有内存管理:

class MyClass : ... {
  QGraphicsScene m_scene;
  QGraphicsPixmapItem m_pixmapItem; // must be after m_scene: in C++ this order matters!
  ...
}
MyClass::MyClass() {
  ...
  m_scene->addItem(&m_pixmapItem);
}
void MyClass::myMethod() {
  m_pixmapItem.setPixmap(QPixmap::fromImage(LifeGrid));
}