QThreads传染媒介

时间:2017-12-13 15:56:22

标签: c++ qt qthread

我正在尝试多线程化我的图像记录应用程序,以优化性能并防止GUI冻结。 我试图创建一个CaptureThread的向量(我的类扩展了QThread)但是它没有编译...

这是我的代码:

vector<CaptureThread> v_ct_Threads(i_SelectedCameras);

for(int i = 0; i < i_SelectedCameras; i++) {
    v_ct_Threads[i] = CaptureThread(i, qsb_Duration->value());
    v_ct_Threads[i].start();
}

for(int i = 0; i < i_SelectedCameras; i++) {
    v_ct_Threads[i].wait();
}

错误:

use of deleted function ‘CaptureThread& CaptureThread::operator=(CaptureThread&&)’
v_ct_Threads[i] = CaptureThread(i, qsb_Duration->value());

我猜这是一个愚蠢的错误,但我是C ++和Qt的初学者......

1 个答案:

答案 0 :(得分:3)

CaptureThread的复制构造函数已删除,可能是因为无法复制QThread。

您可以将CaptureThreads的指针输入到线程向量中。

vector<std::unique_ptr<CaptureThread>> v_ct_Threads(i_SelectedCameras);

for(int i = 0; i < i_SelectedCameras; i++) {
    v_ct_Threads[i] = std::make_unique<CaptureThread>(i, qsb_Duration->value());
    v_ct_Threads[i]->start();
}

for(int i = 0; i < i_SelectedCameras; i++) {
    v_ct_Threads[i]->wait();
}