最近因为需要对一个Qt软件进行截图,而且很多过程图片是没办法在开发中截取的,只能在软件运行的时候截取,那么怎么解决呢?后来我想到可以写个定时器来控制一个截图程序,每隔一段时间便进行一次截图,这样的话,系统运行的时候,一样可以进行截图.
既然这么想了,大致看了下Qt的截图程序,发现还是挺简单的,于是我就写了个,后来顺利的帮我截取了所有的界面图片.
核心代码罗列出来,主要就是一个定时器+截图程序
1:定时器定义:
//定义一个timer用来截取系统图片 QTimer *screentimer = new QTimer(this); //timer的timeout触发cutScreen()函数,而cutScreen()函数正是截图程序 connect(screentimer, SIGNAL(timeout()), this, SLOT(cutScreen())); //计时开始5000毫秒截取一次,也就是5s screentimer->setInterval(5000); //启动定时器 screentimer->start();
2:截图代码:
/******************************************************************************* * 名称:截图程序,帮助软件自动截图 * 功能:截图程序 * 形参:无 * 返回:无 * 说明:无 ******************************************************************************/ void mainwindow::cutScreen() { QPixmap screen; QString format = "png"; QString filename = QDateTime::currentDateTime().toString(); screen = QPixmap::grabWindow(QApplication::desktop()->winId()); screen.save(filename, format.toAscii()); qDebug() << "saved file" << filename; }
通过以上代码,便可以进行系统截图,截取的图片均在程序当前目录,当然也可以自定义.Qt自带的截图程序也可以参考.
文章的脚注信息由WordPress的wp-posturl插件自动生成