Qt實現截屏的關鍵函數

 

文章已更新,最新地址:https://www.fearlazy.com/index.php/post/136.html

 

 

截屏功能就是將截屏時刻的屏幕畫面保存爲圖片。所以截屏的關鍵就在於如何獲取屏幕的內容,幸運的是Qt爲我們提供了這樣的接口。它就是QScreen類的grabWindow函數。函數聲明如圖:

image.png

    函數返回的就是圖片,參數是窗口ID和要截取的區域(x、y、width和height組成的矩形區域)。窗口ID可以通過QWidget的winId()獲得,若截取整個屏幕窗口ID傳入0。測試代碼:

    image.png

    QApplication::primaryScreen()用於獲取電腦的當前設置的主屏幕,x、y、width和height使用默認值,表示獲取整個屏幕。獲取屏幕圖片後使用label顯示出來,label設置爲無邊框(Qt::FramelessWindowHint),大小和屏幕一樣大。

image.png

程序運行後點擊截屏按鈕後好像電腦死機一樣,點擊屏幕所有地方都沒有反應,那是因爲用來顯示截屏圖片的label將整個窗口都覆蓋住了。獲得整個屏幕的圖片之後想要實現自定義區域截圖就簡單了,只需要通過窗口的鼠標移動事件來獲取截圖區域,然後用QPixmap的copy函數複製屏幕圖片的區域即可,有興趣的可以試一試。

    

 

測試環境:Qt5.9.6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章