QT 截取屏幕的實現


QPixmap提供了兩個函數 grabWidget 和 grabWindow 可以將屏幕上的窗體存成一個 QPixmap 格式的圖片,很容易再將 QPixmap 存成文件。函數使用很簡單,兩行代碼就可以:

QPixmap pixmap = QPixmap::grabWidget(this); //this是調用該函數的QWidget 指針
pixmap.save(“widget.png”,”png”);

兩個函數的原型如下:

QPixmap QPixmap::grabWindow ( WId window, int x=0, int y=0, int w=-1, int h=-1 )

  • WId 表示被截取窗口的ID號
  • x, y 表示截取范圍的起始坐標
  • w, h 分別表示截取范圍的寬度和高度,如果為 -1,則表示全部截取

QPixmap QPixmap::grabWidget ( QWidget * widget, int x=0, int y=0, int w=-1, int h=-1 )

widget表示被截取窗口的畫布部分,其余參數同grabWindow

grabWidget 和 grabWindow 兩種方式,差別在於帶不帶 標題欄

void MainWindow::on_pushButton_clicked()
{
    QPixmap pixmap = QPixmap::grabWindow( QApplication::desktop()->winId(), pos().x(), pos().y(), frameGeometry().width(), frameGeometry().height() );
    pixmap.save("d:\\a.bmp","bmp");
}
void MainWindow::on_pushButton_2_clicked()
{
    QPixmap pixmap = QPixmap::grabWidget(this);
    pixmap.save("d:\\b.bmp","bmp");
}

需要強調的是: 執行 grabWidget()的時候,會自動調用 paintEvent( QPaintEvent *event ) 進行重繪操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM