如何使用指针QImage * image中的setPixmap设置QLabel?

时间:2013-06-07 18:03:44

标签: multithreading qt qt-creator ros

我正在尝试运行两个线程。一个是非Gui线程,另一个是GUI线程。现在,当我试图使用命令
将图像放入QLabel时  imageLabel->setPixmap(QPixmap::fromImage(image));
 然后我收到一个错误: QPixmap:在GUI线程之外使用pixmaps是不安全的

所以,要处理上面提到的问题。我在头文件中声明了QImage *image;,然后使用image = new QImage(&(msg->data[0]), msg->width, msg->height, QImage::Format_RGB888);将我的图像从msg获取到*图像,然后我想在此指针的 QLabel 中设置我的图像。但我不明白,现在应该使用什么格式的setPixmap 。 通常的代码imageLabel->setPixmap(QPixmap::fromImage(image));现在不起作用,因为QImage *image是类型的指针。

所以,基本上我正在努力做到以下几点: -

QImage *image; //in header file
QLabel *imageLabel: //in header file

image = new QImage(&(msg->data[0]), msg->width, msg->height, QImage::Format_RGB888);
imageLabel->setPixmap(QPixmap::fromImage(???????));

1 个答案:

答案 0 :(得分:1)

您需要使用*运算符将QImage*转换为QImage&

imageLabel->setPixmap(QPixmap::fromImage(*image));

但是如果你在错误信息中得到“GUI线程之外”,你就试图在另一个线程中设置标签的pixmap。这是不可能的。除了QPixmap问题之外,不允许在GUI线程之外使用GUI对象。