最近有一个arm板上的程序需要重写用户手册,在网上找了许久,没找到合适的截屏工具。于是只好自己动手做一个了。

因为arm板上有已经有了Qt环境,于是想到用 Qt的QPixmap::grabWindow 直接抓屏即可。

部署到arm设备后用com连接设备,抓屏,一步OK!虽然简单,但给编写手册的小伙伴们使用足够了。

代码没几行,贴上全部代码了。

#include <QApplication>
#include <QPixmap>
#include <QDesktopWidget>
#include <QDateTime>
#include <QFileInfo>
#include <iostream>
using namespace std; void printHelp()
{
QString msg =
"grab screen tool v1.0.0(2016.06.15)\n"
"author:tech@baijunjie.com\n"
"usage: grabscreen [path]";
cout << msg.toLocal8Bit().data() << endl;
} int main(int argc, char *argv[])
{
if( argc > 2 )
{
printHelp();
return 0;
} QApplication a(argc, argv); QString path; QStringList args = QApplication::arguments();
for( int n = 1; n < args.size(); n++ )
{
QString arg = args.at( n );
if( arg.size() > 0 )
{
if( arg.startsWith( "--" ) )
{
if( arg == "--help" )
{
printHelp();
return 0;
}
}
else
{
if( path.isEmpty() )
{
path = arg;
}
}
}
} if( path.isEmpty() )
{
path = QString("grabscreen%1.png").arg( QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz") );
}
else if( path.endsWith("/") || path.endsWith("\\") )
{
path += QString("grabscreen%1.png").arg( QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz") );
} QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
if( !pixmap.isNull() )
{
if( pixmap.save( path ) )
{
cout << "screen grabbed " << path.toLocal8Bit().data() << endl;
}
else
{
cout << "faile to save grabbed image to " << path.toLocal8Bit().data() << endl;
}
}
else
{
cout << "grab screen failed!" << endl;
} return 0;
}

一个基于Qt的截屏程序的更多相关文章

  1. JAVA实现的截屏程序

    http://hadeslee.iteye.com/blog/125386 http://www.jb51.net/article/75114.htm JAVA截屏程序(第三版) JavaEXTSwi ...

  2. 团队软件开发_基于windows下截屏软件关于NABC框架的特点

    经过我们小组数次的激烈讨论,就自己的能力和时间而言,我们小组的初步的计划是开发一款基于windows下的截图软件. 关于这个软件的功能,我们初步的想法如下: 1.能在windows下后台运行,有相应的 ...

  3. Qt实现截屏并保存(转载)

    原博地址:http://blog.csdn.net/qinchunwuhui/article/details/52869451?_t_t_t=0.28889142944202306 目前对应用实现截屏 ...

  4. 一个类实现Java截屏并保存到指定文件夹

    不知小伙伴们有没有遇到过使用java来截屏的需求,截屏后保存到指定的目录,在桌面上没有任何体现,完全不知道已经被截屏了.至于截屏后怎么做,可能有的老铁只是好奇想知道某人在干啥?也有的老铁可能想进行文字 ...

  5. 开源一个基于nio的java网络程序

    因为最近要从公司离职,害怕用nio写的网络程序没有人能看懂(或许是因为写的不好吧),就调整成了mina(这样大家接触起来非常方便,即使没有socket基础,用起来也不难),所以之前基于nio写的网络程 ...

  6. 基础的基于QT的图像查看程序

    代码来自<QT5.9c++开发指南>,因为实现了图片的遍历显示,对于将来编写ImageShop一类的图像程序来说将非常有用(这个程序目前存在一定问题,在研究过程中进行解决) 一.基本功能 ...

  7. 【MVVMLight小记】一.快速搭建一个基于MVVMLight的silverlight小程序

    写了篇MVVM小记http://www.cnblogs.com/whosedream/p/mvvmnote1.html,说好要写点MVVMLight的东西,所以接着写,以便和大家共勉. 我假设你已经有 ...

  8. 一个基于python的即时通信程序

    5月17日更新: 广播信息.用户列表.信息确认列表以及通信信息,从原来的用字符串存储改为使用字典来存储,使代码更清晰,更容易扩展,具体更改的格式如下: 广播信息(上线): { 'status': 信息 ...

  9. 创建一个基于ViSP的图片显示程序

    创建一个图片读取,并在windows下窗口显示的程序. #include <visp/vpDisplayD3D.h> #include <visp/vpDisplayGDI.h> ...

随机推荐

  1. Github上的优秀安卓项目

    http://www.cnblogs.com/hawkon/p/3593709.html

  2. 利用jQuery打造个性网站

    网页结构 编写全局样式(reset.css) /*全局样式*/ body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fi ...

  3. 自制DTU

        最近打算自己做一款工业级DTU产品,预计到今年年底前完成,博客会随时更新产品进度,有兴趣的朋友可以联系我.

  4. N个数依次入栈,出栈顺序有多少种

    题目:N个数依次入栈,出栈顺序有多少种? 首先介绍一下卡特兰数:卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 2 ...

  5. php set env

    SYSTEM WARNING: 'date_default_timezone_get(): It is not safe to rely on the system's timezone settin ...

  6. leetcode_question_111 Minimum Depth of Binary Tree

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  7. 开发汉澳即时通信网,2006年上线,QQ死期到了

    为汉澳sinox用户打造即时通信网让大家用上即时通信软件 近期腾讯关闭了linuxQQ登录,汉澳 sinox也登陆不上.非windows用户再也不能用上即时通信软件了! 这是多么可悲的事,可是我们必须 ...

  8. Mina入门:Java NIO基础概念

    JDK1.4引入了Java NIO API(Java New IO),Java NIO得到了广泛应用.NIO允许程序进行非阻塞IO操作.java.nio.* 包括以下NIO基本结构: Buffer - ...

  9. sql2008R2数据库备份--双机备份

    二.解决SQL2008代理作业出现错误: c001f011维护计划创建失败的解决方法 SQL2008数据库总会出现从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-49 ...

  10. PHP与MySQL交互

    <?php $con = mysql_connect("localhost","root","12345"); $dbcharset ...