保存小部件的屏幕截图

问题描述:

我想在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

this answerthis forum post,人们建议如下:

最有可能的,这是需要处理.jpg文件的插件是不是你的应用程序中。为了解决此问题,请执行下列操作之一:

  • 如果你正在做一个静态的构建,添加QTPLUGIN += qjpeg到您的.pro文件或
  • 如果你正在做一个动态的构建,把imageformats文件夹从%QTDIR%\plugins旁边你的.exe