一般的qthread movetothread我们就不说了,大家都是牛人,就分享下这个 QtConcurrent 的一些比较少用到,但是看完又觉得非常妙的例子。
1、在子线程里面直接更新ui
QtConcurrent::run([this] { // This code runs in a separate thread for (int i = 0; i < files.size(); ++i) { // This is safe for cross-thread use QMetaObject::invokeMethod(ui->label, "setText", files[i]); myfoo(); } });
2、把耗时的计算(类的子函数也可以!)丢到子线程,比如图像翻转:
Image image = ...; QFuture<void> future = QtConcurrent::run(&image, &QImage::invertPixels, QImage::InvertRgba); ... future.waitForFinished(); // At this point, the pixels in 'image' have been inverted
3、本来的用处:并发,这个不说了,自己搜索
4、其他补充。。。