一个基于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: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; }