zoukankan      html  css  js  c++  java
  • Qt实现截屏并保存(转载)

    原博地址:http://blog.csdn.net/qinchunwuhui/article/details/52869451?_t_t_t=0.28889142944202306

    目前对应用实现截屏的方法还是比较多的,首先我们要了解Qt中的窗口的是如何设计的,不管是MFC下的窗口,还是其他窗口,仿佛都相似,曾经狂学MFC,结果毕业一次没用过已经还给老师,悲催,好了下面我们来介绍一下Qt的窗口设计吧!鸡冻吧…. 
    1.首先我们来看看我从手册上盗取的图片

    窗口结构 
    我们了解了Qt的窗口框架,让我们来看看她(羞涩的小菇凉,想多了….)提供的几个函数吧! 
    包括整个窗口:x(), y(), frameGeometry(), pos(), and move(). 提供这个几个函数,通过这个几个我们就可以方便的操作整个窗口的位置以实现截图啦。 
    不包含窗口框(其实就一个标题栏)的:geometry(), width(), height(), rect(), and size().,通过这个几个函数我们就可以操作窗口的的Client 区域了。

    代码:

    QString fileName;
      QPixmap pix, bmp;
        pix =bmp.grabWindow(QApplication::desktop()->winId(),0,0,        frameGeometry().width(),frameGeometry().height());
        fileName= QDateTime::currentDateTime().toString("yyyy-MM-ddHH-mm-ss")  + ".bmp";//通过时间命名文件
        if (pix.isNull())
        {
            QMessageBox::information(this, "Error", "截屏失败 !", QMessageBox::Ok);
    
        }
        else
        {
            if(!pix.save("../screen/"+fileName,"BMP"))
            {
                QMessageBox::information(this, "Right", "保存错误 !", QMessageBox::Ok);
    
            }
            else
            {
                QMessageBox::information(this, "Grab", "保存成功!",QMessageBox::Ok);
    
            }
        }
    

      PS:亲测可用!

    如果把提示信息去掉,简化的写法为:

    QPixmap p=viewWidget->grab(QRect(20,20,320,480));  //截图区域可根据自己的面板调节,或用系统函数获取
    p.save(QCoreApplication::applicationDirPath()+"//a.png","png");
    

      

  • 相关阅读:
    swift
    swift
    ios
    Swift
    swift
    swift
    /var/log/cron
    Django 数据传递
    HTML 属性
    HTML 元素
  • 原文地址:https://www.cnblogs.com/shanlizi/p/7222788.html
Copyright © 2011-2022 走看看