我正在使用线程开发一个使用Qt的应用程序。启动应用程序我启动了一个线程来完成一些工作,将需要完成工作的对象移动到这样的线程
QThread aThread;
CsvLoader csvLoader;
connect(&aThread, SIGNAL(started()), &csvLoader, SLOT(compute()));
csvLoader.moveToThread(aThread);
aThread.start();
在应用程序开始时工作正常。现在,我在UI中有一个按钮,基本上我想要做的就是从compute()
重新运行csvLoader
方法,只需执行
aThread.start();
然而,第二次使线程运行的调用并不是调用连接到started()
信号的插槽。
关于我可以检查什么或者我可能缺少什么的任何想法?
答案 0 :(得分:1)
start()
的第二次调用将无效QThread
已启动。
您需要做的是将您的广告位compute()
连接到您将从onClicked()
广告位(或其拥有的任何名称)发出的信号。或者直接将其连接到按钮信号clicked()
。
请注意,您可以同时将多个插槽连接到同一信号。