Qt屏幕截图控件如何实现
发表于:2025-02-14 作者:千家信息网编辑
千家信息网最后更新 2025年02月14日,这篇文章主要讲解了"Qt屏幕截图控件如何实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt屏幕截图控件如何实现"吧!一、前言屏幕截图控件在我的很多
千家信息网最后更新 2025年02月14日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安全错误
数据库的锁怎样保障安全
ibm服务器 9f
数据库高级讲解
高校网络安全岗
通州区先进软件开发要求
华为昇腾服务器河南
计算机网络技术素质测评特长
软件开发公司官网源码免费
相城区营销网络技术咨询热线
怎么看电脑本地服务器
eps数据库靠谱吗
网络技术和计算机发展
建立数据库xsqk的命令
诛仙gm工具连接数据库
陕西系统软件开发费用
网络安全中石化
中国网络安全组的组长是谁
女性学网络技术难吗
软件开发需求分解表
燃烧的远征人数最多的服务器
信息网络安全监察警察
网络安全暑期志愿活动
杭州erp软件开发哪家好
seer数据库字段详解
国家信息与网络安全中心
国家层面网络安全现状
境外服务器安全吗
安徽双线服务器租用虚拟主机
网络安全责任书广电
c 游戏服务器引擎
数据库安全性 完整性分析