让我们有一个可以从各种对象访问的工作线程。这个worker对象有一些公共插槽,所以任何将其信号连接到工作槽的人都可以使用emit
来触发工作线程的有用任务。
这个工作线程需要几乎是全局的,因为几个不同的类使用它,其中一些在层次结构的深处(主应用程序的子节点的子节点)。
我想有两种主要方法可以做到这一点:
子类的所有方法都通过返回值向上传递消息,并让主(例如GUI)对象处理所有发送。
所有需要工作线程服务的类都有一个指向Worker对象(它是主类的成员)的指针,并且它们在构造函数中都是connect()
。然后每个这样的班级都会自己发射。基本上,依赖注入。
选项2.对我来说似乎更加干净和灵活,我只担心它会创建大量的连接。例如,如果我有一个需要该线程的对象数组,我将为该数组的每个元素分别建立一个连接。
有没有“正式”的方式来做这件事,因为Qt的创造者想要它?
答案 0 :(得分:2)
这没有神奇的银弹。您需要考虑许多因素,例如:
container()->handle(data)
那样做。然后,每个容器只有一个连接。