要實現IconButton,需要處理背景。參考:
QT之IconWidget-CSDN博客
隨后就是Button的按下動畫效果。實現也簡單。思路就是記錄按下狀態,然后在繪制時偏移一個像素(也可以繪制另外一個圖)。
- 增加一個字段,記錄按下狀態:
bool mPressedState;
- 重載4個函數
void keyPressEvent(QKeyEvent *e) override;void keyReleaseEvent(QKeyEvent *e) override;void mousePressEvent(QMouseEvent *e) override;void mouseReleaseEvent(QMouseEvent *e) override;
- 重載paintEvent()?
int move = mPressedState ? 1 : 0;painter.drawPixmap(move, move, mPixmap->scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));