要想在Qt中實現屏幕或窗口截圖功能 ,一般有兩種方法:函數
1 -- 使用 QPixmap 類
ui
2 -- 使用 QScreen類
spa
然而雖然倆兩種方法用到的類不相同,可是調用到的類成員函數的函數名稱和參數倒是相同的code
都是 grabWindow() 這個函數 blog
所不一樣的是,QPixmap中的 grabWindow()函數 是靜態成員io
QScreen中的grabWindow()成員是非靜態成員class
下面展現兩種截屏的方法構造函數
QPixmap方法map
//截屏並保存爲 123.jpg QPixmap::grabWindow(QApplication::desktop()->winId()).save("123","jpg"); /**************************************************************** 要注意的是 QApplication::desktop()->winId(),返回的是 要截屏的窗口的ID , 設爲0 表示當前桌面 ,截屏時就會截全屏 ******************************************************************/
注:這種方法在Qt5中已通過時 , 應該使用QScreen方法代替方法
QScreen方法
1 //功能一樣是截屏 , 注:QScreen的構造函數是私有的 2 QScreen *screen = QGuiApplication::primaryScreen(); 3 screen->grabWindow(0).save("123","jpg");