【发布时间】:2020-12-05 11:04:47
【问题描述】:
我在互联网(和 Qt 文档)上看到了很多使用 QThread 的示例,创建了该类的子类,然后将工作对象移动到该线程。然后基本上QThread::started() 信号连接到工作类对象的某个插槽以运行某个功能。
现在我想在我的项目中做同样的事情,不同的是我想将我的工作类移动到一个已经运行的线程,然后在该线程上调用一些函数。为了实现这一点,我在下面的代码中提出了一个小技巧,我使用QTimer 类来调用我的工人类中的公共槽。
QThread myThread;
myThread.setObjectName("myThread");
myThread.start();
Worker worker;
worker.moveToThread(&myThread);
QTimer::singleShot(0, &worker, [&worker](){
worker.doStuff(5);
});
有没有更惯用的方法来实现相同的目标?
【问题讨论】:
标签: c++ multithreading qt qthread