jah*_*aho 9 c++ qt multithreading signals
我有类似下面的类设计,我想知道我是否可以使用许多信号槽连接来进行通信.有一个MainWindow类可以保存所有的GUI,然后是一个Wrapper类,它提供了一个后端接口,然后有一个Controller类来生成和管理线程,最后有一些类Worker可以完成所有的工作.
现在让我们说我正在加载一个文件,并希望使用进度条显示进度MainWindow.我的Worker班级发送updateProgress(int progress)到Controller::handleProgress(int progress)插槽,再次向Wrapper课程发送进度信号,然后向主窗口发送进度信号,最后更新进度条.
类似地,当数据被加载时,它在Wrapper类中被处理,并且再次通过信号和槽进行通信(尽管少一步).
它是在Qt中做事的标准方式还是我应该重新考虑我的设计?
JBL*_*JBL 12
这是一种有效的可能性.
请注意,Qt允许您更进一步,并执行以下操作:
QObject::connect(&sender, SIGNAL(mySenderSignal(int)),
&receiver, SIGNAL(myReceiverSignal(int));
Run Code Online (Sandbox Code Playgroud)
没错,你可以将信号绑定到信号上.所有这一切都可以被视为" 当发射器的信号被发射时,发出接收器的信号 ".
如果您没有在中间插槽中执行任何特定任务,那么可能会节省几行,同时准确显示您正在做的事情:您正在"转发"信号.否则,如果你必须在两者之间绝对工作,那么你必须保留信号和插槽.
请注意,您仍然需要确保信号签名匹配.
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |