为什么 QThread 不是 运行?
Why is not QThread being run?
我正在使用 Qt 使用线程开发应用程序。启动应用程序我启动了一个线程来做一些工作,将需要完成工作的对象移动到这样的线程
QThread aThread;
CsvLoader csvLoader;
connect(&aThread, SIGNAL(started()), &csvLoader, SLOT(compute()));
csvLoader.moveToThread(aThread);
aThread.start();
在应用程序开始时工作正常。现在,我在 UI 中有一个按钮,基本上我想做的就是通过
重新 运行 来自 csvLoader
的 compute()
方法
aThread.start();
但是,使线程 运行 的第二次调用并未调用连接到 started()
信号的插槽。
关于我可以检查什么或我可能遗漏什么有什么想法吗?
第二次调用 start()
将不会执行任何操作,因为 QThread
已经开始。
您需要做的是将插槽 compute()
连接到您将从 onClicked()
插槽(或任何名称)发出的信号。或者直接连接到按键信号clicked()
。
请注意,您可以同时将多个插槽连接到同一个信号。
我正在使用 Qt 使用线程开发应用程序。启动应用程序我启动了一个线程来做一些工作,将需要完成工作的对象移动到这样的线程
QThread aThread;
CsvLoader csvLoader;
connect(&aThread, SIGNAL(started()), &csvLoader, SLOT(compute()));
csvLoader.moveToThread(aThread);
aThread.start();
在应用程序开始时工作正常。现在,我在 UI 中有一个按钮,基本上我想做的就是通过
重新 运行 来自csvLoader
的 compute()
方法
aThread.start();
但是,使线程 运行 的第二次调用并未调用连接到 started()
信号的插槽。
关于我可以检查什么或我可能遗漏什么有什么想法吗?
第二次调用 start()
将不会执行任何操作,因为 QThread
已经开始。
您需要做的是将插槽 compute()
连接到您将从 onClicked()
插槽(或任何名称)发出的信号。或者直接连接到按键信号clicked()
。
请注意,您可以同时将多个插槽连接到同一个信号。