2013-01-09 48 views
-1

我对Qt信号有一些令人困惑的问题。Qt如何传输信号?

(1)假设A是B的父亲。 B发出一个信号。信号是否转到A?使用一些代码来解释我的问题。

connect(B, SIGNAL(B_signal()), C, SLOT(C_slot())); 
connect(A, SIGNAL(B_signal()), C, SLOT(C_slot())); 

第二行有效吗? (2)如果A是从B导出的,那么A是否有B的信号?

谢谢。

+1

有已经提出的问题gozillion ...这里是一个http://stackoverflow.com/questions/1368593/qt-question-how-do-信号和插槽工作 – user1824407

+0

他们是同样的问题吗? – user1899020

+0

@ user1899020这与您的帖子标题是同一个问题,但是您在帖子正文中提出了两个不同的问题。 – cmannett85

回答

2

这是我对该主题的理解:

(1)不,第二行无效。子父母关系用于定义对象的层次结构 - 它允许检索对象的对象/父对象的所有子对象,从而允许自动对分层树的分支执行某些操作 - 比如删除对象时的所有子对象被删除等等。但是,信号和时隙属于每个特定的对象。当信号正在发射时,它正在通过物体所处的线程的事件循环进行处理。

(2)是的,在这种情况下,A具有B的所有信号,槽,方法和成员变量继承你可以认为它是B是A的一部分。

+1

“当信号发出时,它正在被对象所在线程的事件循环处理。” - 对于同一线程用例(绝大多数信号/插槽连接),事实并非如此,它只是简单的同步函数调用。 –