• 9307阅读
  • 3回复

Qt5 杂谈(一)Qt5:Qt中屏幕或窗口截图功能的实现 [复制链接]

上一主题 下一主题
离线青春岁月
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-01
— 本帖被 kimtaikee 从 Qt 作品展 移动到本区(2014-04-02) —

要想在Qt中实现屏幕或窗口截图功能 ,通常有两种方法:
  1  -- 使用 QPixmap

  2  -- 使用 QScreen类

然而虽然俩两种方法用到的类不相同,但是调用到的类成员函数的函数名称和参数却是相同的
都是 grabWindow() 这个函数
所不同的是,QPixmap中的 grabWindow()函数 是静态成员
QScreen中的grabWindow()成员是非静态成员
下面展示两种截屏的方法
QPixmap方法


//截屏并保存为 123.jpgQPixmap::grabWindow(QApplication::desktop()->winId()).save("123","jpg");/****************************************************************要注意的是 QApplication::desktop()->winId(),返回的是要截屏的窗口的ID , 设为0 表示当前桌面 ,截屏时就会截全屏******************************************************************/

    注:这种方法在Qt5中已经过时 , 应该使用QScreen方法代替
QScreen方法
1 //功能同样是截屏 , 注:QScreen的构造函数是私有的2 QScreen *screen = QGuiApplication::primaryScreen();3 screen->grabWindow(0).save("123","jpg");
go!   go!  go!  go!
离线迷路

只看该作者 1楼 发表于: 2014-04-02
关于QT截屏的,我这两天也写过一个程序,不过其中的效率问题还没解决
http://blog.csdn.net/hellogdut/article/details/22595531
离线jakes

只看该作者 2楼 发表于: 2014-04-04
楼主的代码乱乱的,虽然看得懂,但还是希望楼主多多格式化下。
离线nongxiaoming

只看该作者 3楼 发表于: 2014-04-13
所谓的截屏就是把整个桌面保存成一张图片,然后新建一个无边框的全屏窗口,把图片做完窗口的背景,用户鼠标选定区域后把图片相应的部分截取出来,完成一次截屏。QQ截屏之类的就是这么做的,在你按下截屏后,实际上整个桌面已经变成一张静态图片全屏显示。你QQ截屏的时候,会发现QQ消息图标不会再跳动,就是这个原因。
快速回复
限100 字节
 
上一个 下一个