【发布时间】:2023-04-10 07:43:01
【问题描述】:
我想在 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);
但不幸的是,这似乎不起作用。 有谁知道问题出在哪里?
【问题讨论】:
-
是否打印“错误”(您的 printf..)?
-
可能会发生很多事情,您在此处提供的代码没有明显问题。是否有任何被覆盖的
paintEvent()函数,你从哪里调用它?grabWindow()有效吗? -
调用 .save 后布尔变量 'a' 的值是多少?你确定你的代码被执行了吗?您是按按钮还是计时器调用它?通过放置 printf 并打印 'a' 的值来验证。
-
嘿.. 我没有覆盖paintEvent()。不打印错误打印。并且 a 是假的。并且肯定会执行代码。
-
好了,像素图保存部分坏了。
save()应该在成功时返回true。然而,保存本身似乎是正确的。目录是否存在,你有写权限吗?