1. 一个信号允许连接多个槽函数

    疑问1:当在这种情况下,一个信号发出,槽函数执行的顺序是按连接时的顺序依次执行的。如 信号sig1和槽函数slot1,slot2

                  connect(btn, SIGNAL(sig1), this, SLOT(slot1()));

                  connect(btn, SIGNAL(sig1), this, SLOT(slot2()));

              那么sig1发出时,先执行槽函数 slot1, 再执行槽函数 slot2

2. 多个信号允许连接同一个槽函数

3. 一个信号允许连接另外一个信号,如

     connect(btn, SIGNAL(clicked()), this, SIGNAL(clicked()));

4. 严格的情况下,信号与槽函数的参数个数和类型需要一致,至少信号的参数不能少于槽函数的参数。

5. 在使用信号与槽函数的类中,必须在类的定义中加入宏 Q_OBJECT

6. 当一个信号被发射时,与其关联的槽函数通常被立即执行,只有当信号关联的所有槽函数执行完毕后,才会执行发射信号处后面的代码

后续:关于以上第6点的说明

7. 当信号发送者和槽函数执行者在一个线程时,是按以上第6点执行的,如果不在一个线程,则信号发出后,立即返回,不论槽函数是否执

   行完成。

8. connect函数的第五个参数说明

   a: Qt::AutoConnection

   b: Qt::DirectConnection

   c: Qt::QueuedConnection

   d: Qt::BlockingQueuedConnection

   e: Qt::UniqueConnection

   默认是第一种连接,此时Qt会自动判断信号发送者和槽函数执行者是否在同一个线程,如果相同则按第二种方式执行,否则按第二种方式执行。

   第四种和第五种遇到过,不做评述。

posted on 2022-09-26 08:52  Recreate  阅读(164)  评论(0编辑  收藏  举报