查看完整版本: [-- Qt5 杂谈(一)Qt5:Qt中屏幕或窗口截图功能的实现 --]

QTCN开发网 -> Qt代码秀 -> Qt5 杂谈(一)Qt5:Qt中屏幕或窗口截图功能的实现 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

青春岁月 2014-04-01 14:25

Qt5 杂谈(一)Qt5:Qt中屏幕或窗口截图功能的实现


要想在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");

迷路 2014-04-02 21:31
关于QT截屏的,我这两天也写过一个程序,不过其中的效率问题还没解决
http://blog.csdn.net/hellogdut/article/details/22595531

jakes 2014-04-04 12:45
楼主的代码乱乱的,虽然看得懂,但还是希望楼主多多格式化下。

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


查看完整版本: [-- Qt5 杂谈(一)Qt5:Qt中屏幕或窗口截图功能的实现 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled