Qt屏幕截图控件如何实现
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"Qt屏幕截图控件如何实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt屏幕截图控件如何实现"吧!一、前言屏幕截图控件在我的很多
千家信息网最后更新 2025年12月03日Qt屏幕截图控件如何实现
这篇文章主要讲解了"Qt屏幕截图控件如何实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt屏幕截图控件如何实现"吧!
一、前言
屏幕截图控件在我的很多项目中都有用到,尤其是嵌入式的系统上的软件,因为在嵌入式系统中,基本上系统都很精简,甚至连UI都没有,开机之后直接运行的就是Qt程序,很多时候需要对软件进行截图保存下来,用来编写文档和介绍,还有产品彩页之类的,毕竟在板子上直接运行的效果是最好的,还有一种办法是将系统编译成win的版本,用系统的截图来,但是嵌入式上很多代码其实很不方便在win上运行,甚至没法运行,而且还要外接很多接口来得到真正的运行效果,所以还是采用直接在板子上的Qt程序中直接集成截图的功能,需要的时候直接鼠标右键弹出来选择即可。
二、代码思路
ScreenWidget::ScreenWidget(QWidget *parent) : QWidget(parent){ //this->setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); menu = new QMenu(this); menu->addAction("保存当前截图", this, SLOT(saveScreen())); menu->addAction("保存全屏截图", this, SLOT(saveFullScreen())); menu->addAction("截图另存为", this, SLOT(saveScreenOther())); menu->addAction("全屏另存为", this, SLOT(saveFullOther())); menu->addAction("退出截图", this, SLOT(hide())); //取得屏幕大小 screen = new Screen(QApplication::desktop()->size()); //保存全屏图像 fullScreen = new QPixmap();}void ScreenWidget::paintEvent(QPaintEvent *){ int x = screen->getLeftUp().x(); int y = screen->getLeftUp().y(); int w = screen->getRightDown().x() - x; int h = screen->getRightDown().y() - y; QPainter painter(this); QPen pen; pen.setColor(Qt::green); pen.setWidth(2); pen.setStyle(Qt::DotLine); painter.setPen(pen); painter.drawPixmap(0, 0, *bgScreen); if (w != 0 && h != 0) { painter.drawPixmap(x, y, fullScreen->copy(x, y, w, h)); } painter.drawRect(x, y, w, h); pen.setColor(Qt::yellow); painter.setPen(pen); painter.drawText(x + 2, y - 8, tr("截图范围:( %1 x %2 ) - ( %3 x %4 ) 图片大小:( %5 x %6 )") .arg(x).arg(y).arg(x + w).arg(y + h).arg(w).arg(h));}void ScreenWidget::showEvent(QShowEvent *){ QPoint point(-1, -1); screen->setStart(point); screen->setEnd(point);#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0)) *fullScreen = fullScreen->grabWindow(QApplication::desktop()->winId(), 0, 0, screen->width(), screen->height());#else QScreen *pscreen = QApplication::primaryScreen(); *fullScreen = pscreen->grabWindow(QApplication::desktop()->winId(), 0, 0, screen->width(), screen->height());#endif //设置透明度实现模糊背景 QPixmap pix(screen->width(), screen->height()); pix.fill((QColor(160, 160, 160, 200))); bgScreen = new QPixmap(*fullScreen); QPainter p(bgScreen); p.drawPixmap(0, 0, pix);}三、效果图
感谢各位的阅读,以上就是"Qt屏幕截图控件如何实现"的内容了,经过本文的学习后,相信大家对Qt屏幕截图控件如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
截图
屏幕
控件
系统
运行
嵌入式
效果
学习
代码
内容
大小
就是
思路
时候
板子
程序
软件
产品
前言
办法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新能源汽车网络技术图书
如何将vue项目连接到服务器
中科可控智能服务器投产线
什么软件能打开考勤数据库
数据库 datetime
行云数据库怎么连接db2
剑网三连接服务器断开
网络安全审查利剑
国家网络安全就缺乏
免费云服务器怎样申请
挖出起点服务器小说
青岛网络安全评测
加强网络安全性的最重要
网吧电脑读不了服务器系统
软件开发工程师高项有用吗
世界超好玩的纯生存服务器
服务器管理器怎么修改密码
享玉财富互联网科技公司电话
呼和浩特网络安全竞赛
阿帕奇微服务器
数字互联网领先科技
剑网三连接服务器断开
东莞绿化覆盖率数据库
软件开发专业要学哪些课程
网络安全宣传电子版宣传手册
世界上收录全文最多的数据库
钉钉e应用数据库
企业网络安全生态报告
服务器是由什么组成的
普洱服务器上门回收平台