当前位置: 首页 > news >正文

解决QPixmap报“QPixmap::grabWindow(): Unable to copy pixels from framebuffer“问题

    今天在使用QPixmap::grabWindow()截图时,弹出“QPixmap::grabWindow(): Unable to copy pixels from framebuffer”错误。

    问题原因:QPixmap::grabWindow()这个函数适用于Qt5版本截屏,但该函数在Qt4上表现不稳定,经常出现“Unable to copy pixels from framebuffer”错误。
    解决方法:建议改成QPixmap::grabWidget()来进行截图。
    详细步骤,请查看第2节【修复代码B】。

1 原始代码A

#include <QApplication>
#include <QPixmap>
#include <QScreen>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 获取当前活动窗口的 IDWId windowId = QApplication::activeWindow()->winId();// 捕获窗口截图QPixmap screenshot = QPixmap::grabWindow(windowId); //此处经常报错,偶尔可用,但不稳定if (screenshot.isNull()) {qDebug() << "Failed to grab window screenshot.";} else {// 保存截图screenshot.save("screenshot.png");qDebug() << "Window screenshot saved successfully.";}return a.exec();
}

2 修复代码B

#include <QApplication>
#include <QPixmap>
#include <QScreen>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 获取当前活动窗口的 IDWId windowId = QApplication::activeWindow()->winId();// 捕获窗口截图//修复如下QRect rect = QApplication::desktop()->screenGeometry();QPixmap screenshot = QPixmap::grabWidget(QApplication::desktop(),rect);   if (screenshot.isNull()) {qDebug() << "Failed to grab window screenshot.";} else {// 保存截图screenshot.save("screenshot.png");qDebug() << "Window screenshot saved successfully.";}return a.exec();
}

参考文献:

【1】 github.2015.mumble-voip.修复QPixmap::grabWindow()报错


http://www.mrgr.cn/news/90609.html

相关文章:

  • qt中实现QListWidget列表
  • 如何搭建Wi-Fi CVE漏洞测试环境:详细步骤与设备配置
  • flink判断两个事件之间有没有超时(不使用CEP)
  • MySQL索引优化,性能飙升的秘密!
  • css块级元素和行内元素区别
  • vue学习9
  • 【云安全】云原生- K8S etcd 未授权访问
  • 20250212:sigmastar系列2-获取UUID进行授权
  • Radius协议详解
  • Qt的isVisible ()函数介绍和判断窗口是否在当前界面显示
  • Word 公式转 CSDN 插件 发布
  • deepseek本地部署
  • 【地理坐标Geo】——8
  • AI前端开发:蓬勃发展的机遇与挑战
  • 【Pandas】pandas Series drop
  • CZML 格式详解,javascript加载导出CZML文件示例
  • HR告诉你,机器视觉公司招聘真相!
  • AI前端开发:跨领域合作的新引擎
  • 【DuodooBMS】江苏新材料行业重资产数字化管理解决方案——从传感器到平台的全链路智能升级,赋能新材料智造新范式
  • 《Python百炼成仙》21-30章(不定时跟新)
  • 若输入超过 5 位数个时,推荐使用 scanf 输入数据。
  • 深入剖析 Vue 的响应式原理:构建高效 Web 应用的基石
  • 一文深入了解DeepSeek-R1:模型架构
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter11-期约与异步函数
  • 【R语言】方差分析
  • GLM库需要VS2013及以上