Qt Gui线程正在阻止问题

问题描述

我是初级程序员

最近,我已经使用Halcon库实现了Image的抓取。

当我按下实时按钮时,计时器开始抓取图像。它可以工作,但是主屏幕冻结到计时器周期。

所以,我正在提高使用Thread捕获图像的性能

首先,我实现了这样的线程

[ImageUpdateWorker.h]

class ImageUpdateWorker : public QObject
{
    Q_OBJECT

public:
    explicit ImageUpdateWorker(QObject* parent = 0,QString strThreadName = "ImageUpdateWorker");
    ~ImageUpdateWorker();

signals:
    void finished();
    void grab();

public slots:
    void run();

private:
    bool m_bStop{ false };
};

[ImageUpdateWorker.cpp]

ImageUpdateWorker::ImageUpdateWorker(QObject* parent,QString strThreadName)
    : QObject(parent)
{
    setObjectName(strThreadName);
}

ImageUpdateWorker::~ImageUpdateWorker()
{
}

void ImageUpdateWorker::run()
{
    while (m_bStop == false)
    {
        emit grab();
    }

    emit finished();
}

第二秒,我实现了继承的QWidget UI Widget,其输出屏幕是这样的

    m_pThread = new QThread();
    m_pUpdateWorker = new ImageUpdateWorker(nullptr,strName);
    m_pUpdateWorker->moveToThread(m_pThread); // UpdateWorker move to Thread

    connect(m_pThread,SIGNAL(started()),m_pUpdateWorker,SLOT(run()));
    connect(m_pThread,SIGNAL(finished()),m_pThread,SLOT(deleteLater()));
    connect(m_pUpdateWorker,SLOT(quit()));
    connect(m_pUpdateWorker,SIGNAL(grab()),this,SLOT(onGrab()));

当我调用“ m_pThread-> start();”时屏幕开始暗淡:(

如果您有任何建议或信息,我们将不胜感激。谢谢您的阅读。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)