要想在Qt中實現屏幕或窗口截圖功能 ,通常有兩種方法:
1 -- 使用 QPixmap 類
2 -- 使用 QScreen類
然而雖然倆兩種方法用到的類不相同,但是調用到的類成員函數的函數名稱和參數卻是相同的
都是 grabWindow() 這個函數
所不同的是,QPixmap中的 grabWindow()函數 是靜態成員
QScreen中的grabWindow()成員是非靜態成員
下面展示兩種截屏的方法
QPixmap方法
//截屏並保存為 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");
