我正在尝试运行两个线程。一个是非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(???????));
答案 0 :(得分:1)
您需要使用*
运算符将QImage*
转换为QImage&
:
imageLabel->setPixmap(QPixmap::fromImage(*image));
但是如果你在错误信息中得到“GUI线程之外”,你就试图在另一个线程中设置标签的pixmap。这是不可能的。除了QPixmap问题之外,不允许在GUI线程之外使用GUI对象。