1. 程式人生 > >Qt實現桌面截圖

Qt實現桌面截圖

實現桌面截圖,軟體如下:
這裡寫圖片描述
圖1 桌面截圖
主要介紹一個方法

grabWindow(WId window, int x = 0, int y = 0, int width = -1, int height = -1)

建立並返回一個QPixmap,通過抓取給定視窗的內容(x、y、width、height)。
引數(x、y)指定視窗中的偏移量,而(width、height)指定要複製的區域。如果寬度為負,則函式將所有內容複製到視窗的右邊界。如果高度為負,則該函式將所有內容複製到視窗的底部。
可以使用QWidget::winId()函式檢索視窗系統識別符號(WId)。使用視窗識別符號而不是QWidget的基本原理是,允許抓取不屬於應用程式、視窗系統框架的視窗,等等。
grabWindow()函式從螢幕中抓取畫素,而不是從視窗中獲取畫素,也就是說,如果有另一個視窗在你抓取的那個視窗中有部分或全部的部分,你也會從覆蓋的視窗獲取畫素。滑鼠游標一般不會被抓取。
警告:一般來說,在螢幕外抓取一個區域是不安全的。這取決於底層的視窗系統。

主要實現程式碼:

    m_pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
    m_showPicLabel->setPixmap(m_pixmap);
    m_showPicLabel->setScaledContents(true);
    m_showPicLabel->show();