模型/线程结果视图

时间:2014-01-02 16:51:19

标签: multithreading qt qt4

我想管理一组应用程序要求。每个需求都有一个状态(Accepted,Rejected,InProgress)和一个消息状态。只要接受了所有要求,就必须启用一些工具按钮。

所有要求都在tableview中查看(两个列:名称和状态消息),每行都有一个图标状态。

需求由分离的工作人员检查。我使用QtConcurrent / QThreadPool执行此操作。但我必须知道游泳池何时完成所有检查。

QThreadPool没有完成信号...

也许我做错了。欢迎任何想法,链接或示例!

2 个答案:

答案 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很酷(参见另一个答案)。