一个基于Qt的截屏程序

最近有一个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:[email protected]\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;
}
时间: 2024-11-09 06:43:43

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

Qt使用教程之创建一个基于Qt部件的应用程序(一)

<Qt Enterprise最新版下载> 本教程主要介绍了如何使用Qt Creator来创建一个文字搜索的小的Qt应用程序,它是Qt UI Tools Text Finder Example的简化版本.该应用程序的用户界面是由Qt部件使用Qt Designer构建的:在代码编辑器中使用C ++编写该应用程序的逻辑. 创建文本搜索项目 1. 选择File > New File or Project > Application > Qt Widgets Application &

JAVA实现的截屏程序

http://hadeslee.iteye.com/blog/125386 http://www.jb51.net/article/75114.htm JAVA截屏程序(第三版) JavaEXTSwingCC++ 呵呵,昨天也看到朋友的留言,又增加了一些功能, 1,增加了一个把截到的图片复制到系统的剪帖板,这样一来就可以直接粘帖到word,photoshop,画图等程序里面了 2,增加了每截一张图片都会新开一个tab来放它,并且tab里面各自有各自的操作方法. 点击下载源文件和可执行JAR文件

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

原博地址:http://blog.csdn.net/qinchunwuhui/article/details/52869451?_t_t_t=0.28889142944202306 目前对应用实现截屏的方法还是比较多的,首先我们要了解Qt中的窗口的是如何设计的,不管是MFC下的窗口,还是其他窗口,仿佛都相似,曾经狂学MFC,结果毕业一次没用过已经还给老师,悲催,好了下面我们来介绍一下Qt的窗口设计吧!鸡冻吧-. 1.首先我们来看看我从手册上盗取的图片  我们了解了Qt的窗口框架,让我们来看看她(

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

经过我们小组数次的激烈讨论,就自己的能力和时间而言,我们小组的初步的计划是开发一款基于windows下的截图软件. 关于这个软件的功能,我们初步的想法如下: 1.能在windows下后台运行,有相应的快捷键,以便随时随地的截取用户所需要的信息: 2.在截屏开始钱前有一个关于形状的选择(如矩形,圆形等),当然,还有我们小组自认为比较好的随意形状的截图: 3.当随意形状截屏时,此软件还有磁性吸附轮廓的功能,以避免鼠标使用时截屏的轮廓不合理情况:

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

因为最近要从公司离职,害怕用nio写的网络程序没有人能看懂(或许是因为写的不好吧),就调整成了mina(这样大家接触起来非常方便,即使没有socket基础,用起来也不难),所以之前基于nio写的网络程序就开放出来好了! 写的比较挫,大家见谅! 首先是PollServer类,主要处理select,做网络事件的监听和基于FutureTask的数据发送,代码如下: package gs.gate; import gs.gate.handle.ClientHandle; import java.util

一个基于QT的解析interproscan结果的C++成员函数

结构域预测软件interproscan提供多种输出格式,出于后期分析的需要,选用了gff3格式.我比较喜欢结合数据库进行分析,所以先要把数据导入数据库. 我之前用QT写好了界面,所以只要在菜单里添加一个QAction.再在主窗口类中添加槽函数就可以了.这里给出我解析文件的槽函数. void MainWindow::on_interproToMyDB(){ PfamToMyDBDlg * dbDlg = new PfamToMyDBDlg(this); dbDlg->exec(); QFile q

一个基于QT简单登录对话框(带验证码功能)

1. 对话框样式 2. 源代码 ①. main.cpp #include <QtGui/QApplication> #include "QLoginDialog.h" #include "Widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } ②. Widget.h #ifndef WID

Python写一个像QQ可快捷键唤起区域截屏的应用

1.截屏应用功能拆解 先把要实现哪些功能罗列一下,功能拆解好了,程序设计时就比较清晰. 1).首先要能响应快捷键调起截屏程序,像QQ使用Ctrl+shift+B可以截屏一样: 2).然后就是截图功能,可以用鼠标选取截取的区域: 3).最后是要把截屏保存为本地图片. 2.做一下技术调研 功能拆解出来了,就开始调查下实现难度,有没有现成的第三方库可用,Python是出了名的库多,多找一找总会找到的. 搜寻了一下Python有截图功能的库,基本都是全屏截图和程序输入坐标来区域截图,没办法用鼠标选择可视

基于Qt的跨平台应用开发

1 Qt简介 Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架.它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能.Qt很容易扩展,并且允许真正地组件编程.基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西. 2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具.2012年,Qt被Digia收购.2014年4月,跨平台集成