2013-04-12 77 views
2

我試圖運行這段代碼的截圖:試圖獲得一個窗口

QPixmap ss = QScreen::grabWindow((WId) FindWindow(NULL, L"Blacklight Retribution")); 
ss.save("haystack.png", "png"); 

,但我收到此錯誤:

error: C2352: 'QScreen::grabWindow' : illegal call of non-static member function 
+0

嗯..得到這個錯誤:C2512:'QScreen':沒有合適的默認構造函數可用: – user2272792

+0

對不起以前的誤導。 ''Pixmap p = QPixmap :: grabWindow(WID)''。見[這裏](http://qt-project.org/doc/qt-4.8/qpixmap.html) – gongzhitaao

+0

謝謝,這是有效的。 :)我在Qt5上得到了這個警告:'class QPixmap __cdecl QPixmap :: grabWindow(unsigned int,int,int,int,int)已棄用,請改爲使用QScreen :: grabWindow()。默認爲主屏幕.'使用這行代碼:'QPixmap :: grabWindow((WId)FindWindow(NULL,L「Blacklight Retribution」))。save(「haystack.png」,「png」);' – user2272792

回答

3

你可以嘗試這樣的事:

QScreen *screen = QGuiApplication::primaryScreen(); 
if (screen) 
{ 
    QPixmap ss = screen->grabWindow((WId) FindWindow(NULL, L"Blacklight Retribution")); 
} 
+0

我不確定你需要檢查'screen'。主屏幕必須始終存在。 –

0

Qt 5已更新屏幕截圖示例和拍攝屏幕功能如下所示:

void Screenshot::shootScreen() 
{ 
    QScreen *screen = QGuiApplication::primaryScreen(); 
    if (const QWindow *window = windowHandle()) 
     screen = window->screen(); 
    if (!screen) 
     return; 

    originalPixmap = screen->grabWindow(0); 
    updateScreenshotLabel(); 
} 
相關問題