Qt的PushButton的常用的三種響應有pressed,released和clicked。
優先級:pressed>released>clicked
按下按鈕pressed函數的內容,釋放按鈕先執行released函數的內容,再執行clicked函數的內容。
當鼠標光標在按鈕上時,鼠標左鍵被按下時,pressed()被發送;
當鼠標左鍵被釋放時,released()被發送;
當按鈕首先被按下然后又被釋放或者快捷鍵被按下,或者當animateClick()被調用時,clicked()被發送。

上圖MyButton中,QPushButton::mouseReleaseEvent(e)內部也不發出released和clicked信號
因為父類QPushButton的mousePressEvent中會作額外處理,會把一個down設置為true。
然后在mouseReleaseEvent中會檢查這個down是否為true,為true后才會發射released和clicked信號
QPushButton和QToolButton都繼承於QAbstractButton,它們都有clicked(bool)和toggled(bool)這兩個信號函數。
這兩個信號最大的區別就是在對應的槽函數中調用按鈕的setCheck(bool )函數所產生的區別。前者不會觸發信號,后者會再次觸發信號。
轉載於https://www.cnblogs.com/nanqiang/p/11315248.html;
