在桌面平台上,QScreen::grabWindow 可以为你的应用截屏,Android 平台上这个不管用了,不过有替代方法。
分两种情况来说吧, Qt Widgets 与 Qt Quick。
插播广告,欢迎关注我的微信订阅号“程序视界”,扫描下方二维码即可:
程序视界每周更新一到二篇程序员相关的文章,从心出发,漫谈程序员眼中的世界和世界眼中的程序员。
Qt Widgets
最关键的就是一个函数: QWidget::render ,这个方法可以把一个 QWidget(包含它的孩子们)的内容渲染到一个 QPixmap 上,然后我们用 QPixmap 的 save 方法就可以保存了。
下面是关键代码:
void Widget::onGrab()
{
QPixmap *pixmap = new QPixmap(size());
render(pixmap);
QString savedPath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
if(savedPath.isEmpty())
{
savedPath = QDir::curre