当前位置: 首页 > news >正文

QT截屏,截取控件为图片,指定范围截屏三种截屏方式

项目中我们常用到截取屏幕,Qt给我的们多种方式:

主要有以下三种:

截取全屏;截取控件为图片;指定位置截屏三种截屏方式;

1.截取全屏

常用:

实现:

    QScreen *screen = QGuiApplication::primaryScreen();screen->grabWindow(0).save("./picture.png", "png");

2.截取控件为图片

 

 实现:

    QScreen *screen = QGuiApplication::primaryScreen();auto rect =  ui->calendarWidget->rect();auto widgetScreenPic = screen->grabWindow(ui->calendarWidget->winId(), rect.x(), rect.y(), rect.width(), rect.height());widgetScreenPic = widgetScreenPic.scaled(QSize(rect.width(), rect.height()), Qt::KeepAspectRatio);widgetScreenPic.save("./widgetpicture.png");

 上面这种方式对造成我的布局显示有问题,改为在全屏上截取控件的范围

    QScreen *screen = QGuiApplication::primaryScreen();auto rect =  ui->calendarWidget->rect();QPoint globalPos = ui->calendarWidget->mapToGlobal(QPoint(0, 0));//auto widgetScreenPic = screen->grabWindow(ui->calendarWidget->winId(), rect.x(), rect.y(), rect.width(), rect.height());auto widgetScreenPic = screen->grabWindow(0, globalPos.x(), globalPos.y(), rect.width(), rect.height());widgetScreenPic = widgetScreenPic.scaled(QSize(rect.width(), rect.height()), Qt::KeepAspectRatio);widgetScreenPic.save("./widgetpicture.png");

3.指定范围截屏:

实现:

       QPixmap p = this->grab(QRect(-20, -20, 200, 500));p.save("./Rectpicture.png","png");

相关文章:

  • 【HTML入门】第一课 - 网页标签框架
  • stm32中IIC通讯协议
  • Xilinx FPGA:vivado关于真双端口的串口传输数据的实验
  • Spring Boot与Spring Batch的深度集成
  • iOS开发中用到的自定义UI库
  • 【Kubernetes学习】
  • Python容器 之 字典--字典的遍历
  • 性能测试、负载测试、压力测试、稳定性测试简单区分【超详细】
  • Solr安装IK中文分词器
  • 【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
  • 使用PowerShell开启防火墙端口
  • 在C++中内存泄露的几种情况及解决内存泄露和指针越界有哪些方法?
  • leetcode 403周赛 包含所有1的最小矩形面积||「暴力」
  • 玄机——第七章 常见攻击事件分析--钓鱼邮件 wp
  • AI绘画Stable Diffusion 解锁精美壁纸创作:利用SD与LLM定制你的专属壁纸,AI副业变现指南!
  • const let
  • GraphQL学习过程应该是这样的
  • Java IO学习笔记一
  • LeetCode算法系列_0891_子序列宽度之和
  • Median of Two Sorted Arrays
  • mysql中InnoDB引擎中页的概念
  • Netty源码解析1-Buffer
  • Protobuf3语言指南
  • uva 10370 Above Average
  • Vue--数据传输
  • 阿里云应用高可用服务公测发布
  • 初识MongoDB分片
  • 如何使用 JavaScript 解析 URL
  • 深入浅出Node.js
  • 手写双向链表LinkedList的几个常用功能
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 学习HTTP相关知识笔记
  •  一套莫尔斯电报听写、翻译系统
  • 移动端 h5开发相关内容总结(三)
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • $(function(){})与(function($){....})(jQuery)的区别
  • (2022 CVPR) Unbiased Teacher v2
  • (C++17) std算法之执行策略 execution
  • (超详细)语音信号处理之特征提取
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)创业家杂志:UCWEB天使第一步
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .describe() python_Python-Win32com-Excel
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET和.COM和.CN域名区别
  • .net和php怎么连接,php和apache之间如何连接
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • /*在DataTable中更新、删除数据*/
  • /boot 内存空间不够