QtConcurrent多线程的妙用

一般的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、其他补充。。。

本文为3YL原创,转载无需联系,但请注明来自labisart.com。

原创文章不易,如果觉得有帮助,可打赏或点击右侧广告支持:

查看打赏记录

发表评论请遵守党国法律!后台审核后方可显示!
  • 最新评论
  • 总共0条评论
  • Blog v1.1© 2021 labisart.com 版权所有 | 联系:labartwork@163.com