繁体   English   中英

从插槽调用更新的QLabel没有更新

[英]QLabel updated from slot call not updating

我已经使用了一个使用QLabel来显示我从相机提取的图像数据的示例(众所周知)。 相关代码如下:

    void myGUI::updatePic1(imgStructColorQt image)
{
    QImage img((const uchar*)image.data,BUFFER_XSIZE,BUFFER_YSIZE, COLOR_BUFFER_BYTE_SIZE*BUFFER_XSIZE, QImage::Format_RGB32);
    img = img.scaled(514,388);
    if (!img.isNull())
    {
        ui->cam1view->setPixmap(QPixmap::fromImage(img));
        ui->cam1view->update();
        ui->cam1view->repaint();
        std::cout << "image updated!" << std::endl;
    }
    else
        std::cout << "image is null" << std::endl;
}

其中updatePic1是一个updatePic1调用30次的插槽,其中包含更新的图像数据。 我的主GUI窗口上的QLabel cam1view显示第一个图像,但此后再也不会更新。 我知道正在正确调用该插槽,因为我看到控制台输出显示“图像已更新!”。 大约每秒30次。 是否有人对为什么不更新QLabel有任何建议? 我也知道图像数据实际上在变化,因为我可以在屏幕上打印单个像素,然后观察它们的变化,就像我摘下并戴上镜头盖时所期望的那样。

哪个线程正在调用此插槽?

请记住,如果发出信号的QObject和接收信号的QObject处于同一线程中,则连接将是直接的,并且不会使用事件队列进行调度。

您的事件线程可能是处理包含发射的循环的线程。 在这种情况下,您的应用程序将永远不会更新GUI,因为它已锁定处理循环。

您是否在单独的线程中进行帧获取?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM