QScreen *p_screen = QGuiApplication::primaryScreen();
pix = p_screen->grabWindow(this->winId(), 0, 0, 1024, 768);
imagename = QDateTime::currentDateTime().toString("MM_dd_hh_mm_ss")+ ".jpg";
if(pix.save(imagename,"jpg", -1)) {
qDebug() << "PrintScreenSuccessfully!";
}else {
qDebug() << "PrintScreenFailed!";
}
这样其实简单截屏就已经有了,但是当我们需要在图片保存的时候,往往需要一个更人性化的提示,即显示一个“正在保存”,保存完图片之后,如果保存完成,则需要显示"图片保存完成",如若保存失败,那么需要显示“图片保存失败”这种需求的时候,我们是不是直接写两个Label在save一前一后的show出来呢。
答案是否定的,因为了解ui底层实现方式的人都知道,ui底层实现是单线程的,那么在这种有save来堵塞的情况下,我们看到的现象只会是“正在保存”没有出现或者一闪而逝,最终只会看见保存完成或者保存失败,那么怎么解决呢。