爲了做出一個QQ截圖功能的模塊,參考了網上某位網友的代碼。這裏我們分析一下主要代碼。
源碼已經過測試運行,不懂的留言即可。
源碼地址:Qtjietu20191216.zip:
1.首先我們一定會想到要對鼠標事件進行改寫,包括點擊,移動,釋放,雙擊取消選區等功能。
//重寫基類方法
void keyPressEvent(QKeyEvent *event);
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
2.我們肯定需要一個背景,然後可以在這個背景控件上去畫我們的截屏框,這裏我們就清楚了,首先點擊截圖按鈕,觸發創建一個全屏的widget,背景設置成透明暗色的,然後根據鼠標點的移動去繪製一個矩形框框,作爲選區,然後鼠標釋放的時候,或者鼠標右鍵點擊的時候,出現保存選區菜單,最後將選區保存爲一張圖片即可。
void fullScreenWidget::loadBackgroundPixmap(const QPixmap &bgPixmap)
{
int width,height;
width = QApplication::desktop()->size().width();
height = QApplication::desktop()->size().height();
loadBackgroundPixmap(bgPixmap,0,0,width,height);
}
vo