将一个信号连接到同一线程的两个插槽

时间:2013-11-21 11:20:23

标签: c++ multithreading qt

我想将一个信号连接到qt中同一个线程的两个插槽。可能吗。

    connect (closL[0], SIGNAL(clicked()),signalMapperL, SLOT(map())) ;
signalMapperL -> setMapping (closL[0], PIDL) ;
connect (signalMapperL, SIGNAL(mapped(int)), this, SLOT(ResumeMic(int))) ;

connect (closL[0], SIGNAL(clicked()),signalMapperL, SLOT(map())) ;
signalMapperL -> setMapping (closL[0], PIDL) ;
connect (signalMapperL, SIGNAL(mapped(int)), this, SLOT(closeAppL(int))) ;

我想在我的应用中的单个相同按钮上提供暂停/恢复选项

thanku

1 个答案:

答案 0 :(得分:3)

我不确定你信号映射器的目的,但是......

您可以根据需要建立与信号的连接数。

连接的插槽将按连接顺序调用。如果多次连接相同的插槽,除非您指定Qt :: UniqueConnection作为连接参数,否则将多次调用它。

如果插槽是直接连接的(当发送器和接收器位于同一个线程时默认),则在发出信号时同步调用插槽。

如果在生活在不同线程中的QObject上触发了插槽,则不会直接进行调用,而是使用事件循环(=>排队连接)。您也可以为生活在同一线程中的QObject强制排队连接,这有时需要通过将Qt :: QueuedConnection传递给连接来避免插槽火灾序列问题。

希望这能回答你的问题。