C++ 可以将信号和插槽链接几次吗?

C++ 可以将信号和插槽链接几次吗?,c++,multithreading,qt,signals,C++,Multithreading,Qt,Signals,我有一些类似于下面的类设计,我想知道我是否可以使用许多信号插槽连接在它们之间进行通信。有一个包含所有GUI的main窗口类,然后是一个包装器类,它提供了一个到后端的接口,然后是一个控制器类,用于生成和管理线程,最后是执行所有工作的工作者s 现在让我们假设我正在加载一个文件,并希望使用主窗口中的进度条来显示进度。我的Worker类将updateProgress(int-progress)发送到Controller::handleProgress(int-progress)插槽,该插槽再次将进度信号

我有一些类似于下面的类设计,我想知道我是否可以使用许多信号插槽连接在它们之间进行通信。有一个包含所有GUI的
main窗口
类,然后是一个
包装器
类,它提供了一个到后端的接口,然后是一个
控制器
类,用于生成和管理线程,最后是执行所有工作的
工作者
s

现在让我们假设我正在加载一个文件,并希望使用
主窗口中的进度条来显示进度。我的
Worker
类将
updateProgress(int-progress)
发送到
Controller::handleProgress(int-progress)
插槽,该插槽再次将进度信号发送到
包装器
类,该类反过来向主窗口发送进度信号,主窗口最终更新进度条

同样,当数据被加载时,它在
包装器
类中进行处理,并且再次通过信号和插槽进行通信(尽管步骤少了一步)


这是Qt中的一种标准做法,还是我应该重新考虑我的设计?

这是一种有效的可能性

请注意,Qt允许您进一步执行以下操作:

QObject::connect(&sender, SIGNAL(mySenderSignal(int)),
                 &receiver, SIGNAL(myReceiverSignal(int));
没错,你可以把一个信号绑定到一个信号上。它所做的一切都可以看作是“当发送方发出信号时,发出接收方的信号”

如果您在中间插槽中没有任何特定任务要执行,这可能会为您节省几行代码,同时准确显示您正在执行的操作:您正在“转发”信号。否则,如果必须在两者之间进行工作,则必须保留信号和插槽

请注意,您仍然必须确保信号签名匹配