作者:kakaka2011
转自:http://blog.youkuaiyun.com/love_gaohz/article/details/12441973
- QPixmap pixmap; //QT库中的图形类,可以处理QT支持的所有图形类型,如JPG,BMP等
- QPixmap pix;
- pix = pixmap.grabWindow(this->winId(),0,0,-1,-1);
- //this->winId()为获得当前窗口ID
- //pix = pixmap.grabWidget(this,0,0,-1,-1); //也可以用这个方法,他们两个区别仅仅是第一个参数不而已已
- if(pix.isNull())
- {
- QMessageBox::information(this,"error","grab Screen failed", QMessageBox::Ok);
- } else {
- if(pix.save("grab.jpg")==false)
- {
- QMessageBox::information(this,"right","save error", QMessageBox::Ok);
- } else
- QMessageBox::information(this,"Grab","bitmap saved as grab.bmp", QMessageBox::Ok);
- }
实现的主要方法是:
①用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)方法。
- QScreen *screen = QGuiApplication::primaryScreen();
- screen->grabWindow(this->winId(),0,0,-1,-1).save("captureImg.jpg","jpg");