在使用信號調用disconnect()方法斷開信號和槽的連接時,信號可以帶簽名也可不帶簽名,參數可以沒有也可以有一個,這些組合情況下disconnect的處理是不同的,具體情況如下:
- PyQt5.14的官網上介紹說如果參數為空,表示信號連接的所有槽都會斷開,這句話是有歧義的,只是斷開所有與信號簽名匹配的槽,如果調用時信號不帶簽名,則默認斷開第一個簽名對應的所有槽;
- 如果斷開時信號帶簽名,參數為槽函數,但二者不匹配時則會引發異常;
- 如果斷開時信號帶簽名,參數為connection對象,斷開的是與簽名匹配的連接信號和槽,不按參數進行連接斷開;
- 如果斷開時信號不帶簽名,參數為connection對象,則按connection對象斷開連接。