我試圖運行這段代碼的截圖:試圖獲得一個窗口
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
我試圖運行這段代碼的截圖:試圖獲得一個窗口
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
你可以嘗試這樣的事:
QScreen *screen = QGuiApplication::primaryScreen();
if (screen)
{
QPixmap ss = screen->grabWindow((WId) FindWindow(NULL, L"Blacklight Retribution"));
}
我不確定你需要檢查'screen'。主屏幕必須始終存在。 –
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();
}
嗯..得到這個錯誤:C2512:'QScreen':沒有合適的默認構造函數可用: – user2272792
對不起以前的誤導。 ''Pixmap p = QPixmap :: grabWindow(WID)''。見[這裏](http://qt-project.org/doc/qt-4.8/qpixmap.html) – gongzhitaao
謝謝,這是有效的。 :)我在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