QPixmap::grabWindow()抓图问题

命运perfect 2016-09-14 03:49:25
想抓取当前屏幕,但是QPixmap::grabWindow()好像是不能抓鼠标,请问有什么方法可以抓取到鼠标?
或者有什么办法可以显示出鼠标轨迹?
求指导!!!
...全文
3113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
先抓取屏幕,然后以抓取的屏幕为图片背景,在图片上画鼠标的轨迹。要取得鼠标的轨迹,在鼠标按下时保存鼠标的初始位置,在鼠标移动过程中保存鼠标移动的坐标,在鼠标释放时取得鼠标最后的坐标。最后在屏幕上画上鼠标轨迹。 QScreen screen; QPixmap pix = screen.grabWindow(QApplication.desktop().winId()); QPainter painter(&pix); for(int i=0; i<vec.size(); i++) //vec为保存的鼠标移动的坐标点,元素为QPoint { painter.draw(); // 画每个坐标 } painter.end(); 将图片显示出来即为抓取的有鼠标轨迹的屏幕
一口快乐水 2017-05-17
  • 打赏
  • 举报
回复
在stack上找到了替代方案,用Qscreen的grabWindow替代了 grabWindow method is now available in QScreen class. You need to create QScreen object, initialize it with ex. QtGuiApplication.primaryScreen() and then grab the screen screen.grabWindow(QApplication.desktop().winId()) You should use QScreen::grabWindow() instead. QPixmap::grabWindow() is deprecated in Qt 5.0 because: there might be platform plugins in which window system identifiers (WId) are local to a screen.
一口快乐水 2017-05-17
  • 打赏
  • 举报
回复
4.8里倒是有这个方法
一口快乐水 2017-05-17
  • 打赏
  • 举报
回复
是Qt版本问题吧,我用的5.8,官方文档里QPixmap下没有grabWindow这个方法的
命运perfect 2016-09-23
  • 打赏
  • 举报
回复
引用 2 楼 henry_618 的回复:
楼主有没有试过,在华为机器上这个函数压根截取不了。
这个我倒是不太清楚,现在环境下,使用正常
henry_618 2016-09-22
  • 打赏
  • 举报
回复
楼主有没有试过,在华为机器上这个函数压根截取不了。
weixin_40736678 2021-07-30
  • 举报
回复
@henry_618 我就是华为,截取的是黑屏
tyousi 2016-09-14
  • 打赏
  • 举报
回复
取得鼠标位置,然后在pixmap的对应位置上自己画一个鼠标

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧