Qt屏幕截图控件如何实现
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章主要讲解了"Qt屏幕截图控件如何实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt屏幕截图控件如何实现"吧!一、前言屏幕截图控件在我的很多
千家信息网最后更新 2024年11月26日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安全错误
数据库的锁怎样保障安全
国开数据库运维概述自测
科技互联网估值
国企年度网络安全工作报告
初级数据库管理员工
工业企业数据库最早到哪一年
在我的世界服务器里假装挂机
电子处方软件开发官方平平台
抖爸网络技术天津有限公司
微信小程序创建数据库权限
重庆移动软件开发中心
手机热点解析服务器的dns地址
方舟手游版pvp大佬服务器
网络安全测试合同
数据库系统怎么建立表
肿瘤甲基化数据库
济南软件开发岗位招聘
网络安全法共七章多少条
微擎微课堂数据库
学校网络安全日常检查记录
网络安全的演讲稿600字
软件开发区入门
优化数据库设计
数据库专业课程
玉田创新软件开发答疑解惑
设置sql数据库密码
杭州东忠软件开发
数据库工程师 招聘
ddns服务器搭建
手机聊天软件开发制作
成都人工智能软件开发需要多少钱