QPixmap提供了两个函数 grabWidget 和 grabWindow 可以将屏幕上的窗体存成一个 QPixmap 格式的图片,很容易再将 QPixmap 存成文件。函数使用很简单,两行代码就可以:

QPixmap pixmap = QPixmap::grabWidget(this); //this是调用该函数的QWidget 指针
pixmap.save(“widget.png”,”png”);

两个函数的原型如下:

QPixmap QPixmap::grabWindow ( WId window, int x=0, int y=0, int w=-1, int h=-1 )

  • WId 表示被截取窗口的ID号
  • x, y 表示截取范围的起始坐标
  • w, h 分别表示截取范围的宽度和高度,如果为 -1,则表示全部截取

QPixmap QPixmap::grabWidget ( QWidget * widget, int x=0, int y=0, int w=-1, int h=-1 )

widget表示被截取窗口的画布部分,其余参数同grabWindow

grabWidget 和 grabWindow 两种方式,差别在于带不带 标题栏

void MainWindow::on_pushButton_clicked()
{
QPixmap pixmap = QPixmap::grabWindow( QApplication::desktop()->winId(), pos().x(), pos().y(), frameGeometry().width(), frameGeometry().height() );
pixmap.save("d:\\a.bmp","bmp");
}
void MainWindow::on_pushButton_2_clicked()
{
QPixmap pixmap = QPixmap::grabWidget(this);
pixmap.save("d:\\b.bmp","bmp");
}

需要强调的是: 执行 grabWidget()的时候,会自动调用 paintEvent( QPaintEvent *event ) 进行重绘操作。

QT 截取屏幕的实现的更多相关文章

  1. Qt获取屏幕分辨率

    http://my.oschina.net/u/1255773/blog/159557 原 Qt获取屏幕分辨率 发表于1年前(2013-09-06 11:00)   阅读(546) | 评论(0) 3 ...

  2. Android实例-程序界面内截取屏幕(XE8+小米2)

    结果: 1.只能截取程序界面内的图片. 2.图片有点不清楚,自己设置清楚度. 实例代码: unit Unit1; interface uses System.SysUtils, System.Type ...

  3. cocos2d-x 截取屏幕可见区域

    在游戏中,我们经常需要分享到社交网络的功能.分享时,我们时常会需要用到截屏的功能.目前网上的文章虽然很多,但是都是截取的 设计分辨率(DesignResolutionSize)大小的屏幕,而这个并不是 ...

  4. jquery 截取屏幕

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. C# 截取屏幕图像

    #region 截取屏幕图像 private static Bitmap GetScreenCapture() { Rectangle tScreenRect = , , Screen.Primary ...

  6. html2canvas截取屏幕的方法

    html2canvas截取屏幕的方法 需要放在服务上运行,否则会报错, 放在服务器里,完美运行  处理截屏模糊的方法 html2canvas 0.5.0-beta3解决截图模糊问题 需要引入html2 ...

  7. C# 截取屏幕

    /// <summary> /// 截取屏幕 /// </summary> /// <param name="x">起点X坐标</para ...

  8. ffmpeg+nginx截取屏幕实时画面并进行rtmp推流在前端播放

    准备环境和文件 1.下载ffmpeg的包[https://foxbaby.lanzoui.com/iYjPmup51cd] 地址:https://ffmpeg.org/download.html#bu ...

  9. Qt窗口屏幕居中显示(有专门的QDesktopWidget,先计算后显示)

    窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置. Qt中可以采用两种方法达到窗口的屏幕居中显示: 方法 ...

随机推荐

  1. [ACM] HDU 2255 奔小康赚大钱 (二分图最大权匹配,KM算法)

    奔小康赚大钱 Problem Description 传说在遥远的地方有一个很富裕的村落,有一天,村长决定进行制度改革:又一次分配房子. 这但是一件大事,关系到人民的住房问题啊. 村里共同拥有n间房间 ...

  2. 网络拥塞控制(七)BIC-TCP

    转自:http://www.cnblogs.com/fll/archive/2009/02/24/1397592.html 上面我们已经提到了HSTCP,它通过简单的修改标准TCP的增长方式,从而达到 ...

  3. git push.default设置

    转自:http://blog.csdn.net/daijingxin/article/details/51326715 在进行一次空仓库的提交时,我遇到了这个警告 警告如下: warning: pus ...

  4. linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装

    一.memcached安装yum  search  memcachedyum  -y install memcachedmemmcached -h service memcached restartc ...

  5. fabric-ca-client

    fabric-ca-client enroll -u http://admin:adminpw@localhost:7054 /root/.fabric-ca-client:总用量 12-rwxr-x ...

  6. python-opencv旋转图像,保持图像不被裁减

    python-opencv旋转图像,保持图像不被裁减   import cv2 from math import * def remote(img,degree): #degree左转 img = c ...

  7. LaTeX技巧205:使用split输入多行公式技巧

    我们在输入多行公式的时候,split,array,multiline,align,aligned等等都是我们可以选用的环境,这里介绍split的使用方法.演示效果图: 演示代码:\documentcl ...

  8. golang的Flag和Pflag

    Flag和Pflag类似于python的argparse:解析命令行 flag是golang自带的包:github.com/spf13/pflag 参考:https://o-my-chenjian.c ...

  9. cplusplus 库 在线管理; 类似于 python的 pip install 、nodejs 的npm模块

    cplusplus 库 在线管理: 类似于 python的 pip install .nodejs 的npm模块 还有 apache 经常使用的 Apache Ivy 项目依赖管理工具/Maven 这 ...

  10. 计算机中的概念: 视图 VS 镜像

    这两个概念还是不太一样的.下面来说说个人的理解,记录一下. 1. 镜像 镜像可以理解为一份完全一样的拷贝.也就是"深度拷贝",一个复制品. 比如 iso映像文件,ubuntu-12 ...