我对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的信号?
谢谢。
我对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)不,第二行无效。子父母关系用于定义对象的层次结构 - 它允许检索对象的对象/父对象的所有子对象,从而允许自动对分层树的分支执行某些操作 - 比如删除对象时的所有子对象被删除等等。但是,信号和时隙属于每个特定的对象。当信号正在发射时,它正在通过物体所处的线程的事件循环进行处理。
(2)是的,在这种情况下,A具有B的所有信号,槽,方法和成员变量继承你可以认为它是B是A的一部分。
“当信号发出时,它正在被对象所在线程的事件循环处理。” - 对于同一线程用例(绝大多数信号/插槽连接),事实并非如此,它只是简单的同步函数调用。 –
有已经提出的问题gozillion ...这里是一个http://stackoverflow.com/questions/1368593/qt-question-how-do-信号和插槽工作 – user1824407
他们是同样的问题吗? – user1899020
@ user1899020这与您的帖子标题是同一个问题,但是您在帖子正文中提出了两个不同的问题。 – cmannett85