2012-08-13 97 views
0

我想在Qt中保存小部件的屏幕截圖。 我創建了下面的代碼應該工作:保存小部件的屏幕截圖

QWidget* activeWidget = getActiveWidget();//a function that returns the current widget. 
    if (activeWidget == NULL) 
    { 
    return; 
    } 
    QPixmap screenshot; 
    screenshot = QPixmap::grabWidget(activeWidget,activeWidget->rect()); 
    if(screenshot.isNull()){ 
    printf("ERROR"); 
    } 
bool a= screenshot.save("c:\\temp\\asd.jpg", "JPG", 50); 

但不幸的是這似乎並沒有工作。 有誰知道這個問題是什麼?

+0

它打印「錯誤」(您的printf ..)? – shan 2012-08-13 08:03:46

+0

一堆事情可能會發生,你在這裏提供的代碼沒有明顯的問題。有沒有重寫的'paintEvent()'函數,你從哪裏調用它? 'grabWindow()'工作嗎? – TC1 2012-08-13 08:04:33

+0

調用.save之後,布爾變量'a'的值是什麼?你確定你的代碼被執行了嗎?你是否按下按鈕或計時器來調用它?通過放置printf並打印'a'的值來驗證。 – androidFan 2012-08-13 08:13:59

回答

1

this answerthis forum post,人們建議如下:

最有可能的,這是需要處理.jpg文件的插件是不是你的應用程序中。爲了解決此問題,請執行下列操作之一:

  • 如果你正在做一個靜態的構建,添加QTPLUGIN += qjpeg到您的.pro文件或
  • 如果你正在做一個動態的構建,把imageformats文件夾從%QTDIR%\plugins旁邊你的.exe