200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Qt 截屏 程序超级简洁代码

Qt 截屏 程序超级简洁代码

时间:2022-04-05 07:53:43

相关推荐

Qt 截屏 程序超级简洁代码

最近搞了搞Qt的截屏程序,参考了网上几个例子,但是那些例子都加了很多作者自己要完成的内容,别人看起来比较费劲,我整理了一下,其实真正截图起作用的就那么几行代码,所以我觉得有必要分享一下

QPixmap fullScreen;int screenWidget = 640; //屏幕尺寸设置,自己要写别的函数修改尺寸的改这里int screenHight = 480;//就是这一步截取了全屏fullScreen = QPixmap::grabWindow(QApplication::desktop()->winId(),0,0,screenWidget,screenHight);//这一步是设置弹出框询问保存位置和命名的,要自己修改位置和命名的改这里// QFileDialog::Options options;// QString selectedFilter;// QString fileName = QFileDialog::getSaveFileName(this,//tr("Save picture"),//"savescreen.jpg",// &selectedFilter,// options);//设置截图区域,截图区域是从整屏幕截图中复制相应的区域,要自己写函数的改这里// int x = 0;// int y = 0;// int w = 300;// int h = 300;/****************************以下几步是正常的保存QPixmap,可以不转QIameg****************************/// fullScreen = fullScreen.copy(x,y,w,h); //截取区域改这里// fullScreen.save(fileName,"JPG") 需要有保存对话框的这么写// if(fullScreen.save("/savescreen.jpg","JPG"))// qDebug("----------save screen success----------");/**************以下几步是针对嵌入式系统,图像位数有限制,转为了8位的图像,PC端可以不需要**************/QImage image = fullScreen.toImage();// image = image.copy(x,y,w,h); //截取区域改这里//转8位image = image.convertToFormat(QImage::Format_Indexed8,Qt::AutoColor);//image.save(fileName,"JPG") 需要有保存对话框的这么写if(image.save("/savescreen.jpg","JPG"))qDebug("----------save screen success----------");

以上的代码,只要写在一个空的工程里,就能运行了,我是在嵌入式的linux下运行,所以会有图像位数的限制,要转一下QImage降低位数,我直接保存在了固定的路径,名称也固定了,运行一次截一次图,这样就是最小最简洁的了

然后我把各种需要扩展的地方都做了注释,比如要自己写接口设定截图区域的,我标了在哪里改,自己要写保存路径的,我也标出来在哪里改,要是在PC端运行的,可以直接保存QPixmap。

仅希望对别人有所帮助

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。