Qt实现截屏的关键函数

 

文章已更新,最新地址:https://www.fearlazy.com/index.php/post/136.html

 

 

截屏功能就是将截屏时刻的屏幕画面保存为图片。所以截屏的关键就在于如何获取屏幕的内容,幸运的是Qt为我们提供了这样的接口。它就是QScreen类的grabWindow函数。函数声明如图:

image.png

    函数返回的就是图片,参数是窗口ID和要截取的区域(x、y、width和height组成的矩形区域)。窗口ID可以通过QWidget的winId()获得,若截取整个屏幕窗口ID传入0。测试代码:

    image.png

    QApplication::primaryScreen()用于获取电脑的当前设置的主屏幕,x、y、width和height使用默认值,表示获取整个屏幕。获取屏幕图片后使用label显示出来,label设置为无边框(Qt::FramelessWindowHint),大小和屏幕一样大。

image.png

程序运行后点击截屏按钮后好像电脑死机一样,点击屏幕所有地方都没有反应,那是因为用来显示截屏图片的label将整个窗口都覆盖住了。获得整个屏幕的图片之后想要实现自定义区域截图就简单了,只需要通过窗口的鼠标移动事件来获取截图区域,然后用QPixmap的copy函数复制屏幕图片的区域即可,有兴趣的可以试一试。

    

 

测试环境:Qt5.9.6

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fearlazy

打赏是不可能的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值