千家信息网

Qt屏幕截图控件如何实现

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"Qt屏幕截图控件如何实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt屏幕截图控件如何实现"吧!一、前言屏幕截图控件在我的很多
千家信息网最后更新 2026年11月04日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安全错误 数据库的锁怎样保障安全 江苏根荣互联网科技 长亮科技 互联网金融 四川狮子座互联网科技 新华互联网科技校企合作 玖二柒互联网科技公司待遇 欧洲十大科技互联网公司 汽车互联网创新科技园 互联网科技革命什么开始 互联网保险科技创业 河南住房之家互联网科技 中国互联网公司排名锤子科技 佛山市翊博互联网络科技有限公司 高科技互联网套路 互联网第三次科技革命特征 上海钢联属于互联网科技股吗 互联网科技资金流入 从那以后互联网科技有限公司 山东大美朱楼互联网科技有限公司 中国科技和美国互联网 科技互联网公司两年变化 互联网科技股票 互联网科技缩写 互联网科技有哪些公司 互联网经济与金融科技 互联网科技和法律行业 恒生互联网科技业指数调整周期 互联网科技年终奖 新氧科技和美国互联网有关系吗 互联网大会出现的黑科技 科技互联网企业在行动
0