保存小部件的屏幕截图
问题描述:
我想在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);
但不幸的是这似乎并没有工作。 有谁知道这个问题是什么?
答
在this answer和this forum post,人们建议如下:
最有可能的,这是需要处理.jpg文件的插件是不是你的应用程序中。为了解决此问题,请执行下列操作之一:
- 如果你正在做一个静态的构建,添加
QTPLUGIN += qjpeg
到您的.pro文件或 - 如果你正在做一个动态的构建,把
imageformats
文件夹从%QTDIR%\plugins
旁边你的.exe
它打印“错误”(您的printf ..)? – shan 2012-08-13 08:03:46
一堆事情可能会发生,你在这里提供的代码没有明显的问题。有没有重写的'paintEvent()'函数,你从哪里调用它? 'grabWindow()'工作吗? – TC1 2012-08-13 08:04:33
调用.save之后,布尔变量'a'的值是什么?你确定你的代码被执行了吗?你是否按下按钮或计时器来调用它?通过放置printf并打印'a'的值来验证。 – androidFan 2012-08-13 08:13:59