QT截图widget子窗口的图片
QT截取子窗口或者播放窗口图片分为两个步骤,先获取子窗口widget在屏幕中的坐标和宽高,然后调用抓取屏幕图片的方法抓取子窗口坐标和宽高的表示的区域;
(1)子窗口获取相对屏幕的坐标
假如要抓取子窗口widgetmid的图片,先计算widgetmid在整个屏幕中的坐标;
QRect widgetRect; //widgetmid在屏幕中的坐标 QPoint point = ui.widgetmid->mapToGlobal(QPoint(0, 0)); widgetRect.setX(point.x()); widgetRect.setY(point.y()); //widgetmid的宽高 widgetRect.setWidth(ui.widgetmid->width()); widgetRect.setHeight(ui.widgetmid->height()); //抓子窗口区域图片,并显示在CutPicWidget m_CutPicWidget.CutWidgetPic(widgetRect); //m_CutPicWidget显示窗口截图,覆盖在ui.widgetmid之上 m_CutPicWidget.setGeometry(0, 0, ui.widgetmid->width(), ui.widgetmid->height()); m_CutPicWidget.show(); m_CutPicWidget.raise();
(2)抓取区域图片并保存
QPixmap m_widgetScreenPic;是一个变量
int CutPicWidget::CutWidgetPic(QRect rect) { //抓取区域截图 QScreen *screen = QGuiApplication::primaryScreen(); m_widgetScreenPic = screen->grabWindow(0, rect.x(), rect.y(), rect.width(), rect.height());//抓取widget的图片 m_widgetScreenPic = m_widgetScreenPic.scaled(QSize(rect.width(), rect.height()), Qt::KeepAspectRatio); //显示图片 ui.labelPic->setPixmap(m_widgetScreenPic); //保存图片 QString filePathName = "cut-"; filePathName += QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz"); filePathName += ".png"; filePathName = QDir::currentPath() + "/" + filePathName; m_widgetScreenPic.save(filePathName); return 0; }
通过这两个步骤,就可以抓取指定窗口的图片,并显示保存;也可以抓取正在播放的视频画面;
自己开发了一个股票智能分析软件,功能很强大,需要的关注微信公众号:QStockView
分类:
QT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2017-11-23 makefile编写--引用