我想管理一组应用程序要求。每个需求都有一个状态(Accepted,Rejected,InProgress)和一个消息状态。只要接受了所有要求,就必须启用一些工具按钮。
所有要求都在tableview中查看(两个列:名称和状态消息),每行都有一个图标状态。
需求由分离的工作人员检查。我使用QtConcurrent / QThreadPool执行此操作。但我必须知道游泳池何时完成所有检查。
QThreadPool没有完成信号...
也许我做错了。欢迎任何想法,链接或示例!
答案 0 :(得分:0)
如果使用QtConcurrent,则应使用QFutureWatcher
来获取完成的信号。
如果不可能,您可以启动另一个线程并调用pool->waitForDone()
并发出自定义信号。当然这个线程不能在同一个池中。或者,您可以设置间隔较小的QTimer
并使用bool finished = pool->waitForDone(1);
定期检查池是否已完成。
答案 1 :(得分:0)
当你继承QRunnable
时,你也可以添加QObject
的继承(作为第一个),并在运行结束时发出信号。
class YourTask : public QObject, public QRunable {
Q_OBJECT
public:
explicit YourTask(QObject *parent = 0);
void run();
};
当你使用未来时,QFutureWatcher很酷(参见另一个答案)。