QT截取屏幕

来源:互联网 发布:餐饮成本核算软件 编辑:程序博客网 时间:2024/06/05 13:27

作者:kakaka2011

转自:http://blog.csdn.net/love_gaohz/article/details/12441973


[c++] view plaincopy
  1. QPixmap pixmap; //QT库中的图形类,可以处理QT支持的所有图形类型,如JPG,BMP等  
  2. QPixmap pix;  
  3. pix = pixmap.grabWindow(this->winId(),0,0,-1,-1);  
  4. //this->winId()为获得当前窗口ID  
  5. //pix = pixmap.grabWidget(this,0,0,-1,-1); //也可以用这个方法,他们两个区别仅仅是第一个参数不而已已  
  6. if(pix.isNull())  
  7. {  
  8.     QMessageBox::information(this,"error","grab Screen failed", QMessageBox::Ok);  
  9. else {  
  10.     if(pix.save("grab.jpg")==false)  
  11.     {  
  12.         QMessageBox::information(this,"right","save error", QMessageBox::Ok);  
  13.     } else  
  14.         QMessageBox::information(this,"Grab","bitmap saved as grab.bmp", QMessageBox::Ok);  
  15. }  

 

实现的主要方法是:

①用QPixmap的grabWindow去选取窗口抓取图片;

②然后用bool QPixmap::save(const QString & fileName, const char * format = 0, int quality = -1) const,命名保存抓取的图片。

注意点:

①:grabWidget表示被截取窗口的画布部分,grabWindow抓取的是带标题框的部分。

②grabWindow如果第一个参数是0,那么就是抓取的整个桌面。

 

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

 

※Qt5中是使用的 QScreen类,然后使用它的QPixmap QScreen::grabWindow(WId window, int x = 0, int y = 0, intwidth = -1, int height = -1)方法。

 

[c++] view plaincopy
  1.    
  2. QScreen *screen = QGuiApplication::primaryScreen();  
  3. screen->grabWindow(this->winId(),0,0,-1,-1).save("captureImg.jpg","jpg"); 

0 0