我试图制作一个应用程序,通过相机记录拍摄的实时图像,并使用Qt GUI在屏幕上显示。相机驱动程序和api为我提供了刷新指针显示的内存块的功能。 问题是我的图像不会刷新使用Qimage制作的Qlabel(下面的代码)
QImage myImage(raw_image_data_pointer, 768, 576, QImage::Format_RGB32 );
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(myImage));
myLabel.show();
如何让我的QLabel更新?
答案 0 :(得分:3)
问题是您在里面创建了带有静态图像的标签小部件。包含的图像不再“连接”到您的相机,而只是视频流的一个帧的副本。为了使QLabel
更新自己,您必须不断地用新的图像替换包含的图像。例如,您可以为此设置计时器:
MyClass:MyClass()
{
QTimer *timer = new QTimer;
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(10); // Defines how often update the label.
myLabel = new QLabel;
[..]
}
// Slot
MyClass::update()
{
QImage myImage(raw_image_data_pointer, 768, 576, QImage::Format_RGB32 );
myLabel.setPixmap(QPixmap::fromImage(myImage));
}