qt窗口截图

  • 截取窗口:适用做视频通话截图
cpp 复制代码
QScreen *screen=QGuiApplication::primaryScreen();
QPixmap pixmap=screen->grabWindow(ui->widget->winId());//ui->widget->winId()你需要截图的窗口id
pixmap.save("./1.jpg","jpg");
  • 全屏截图
cpp 复制代码
  QScreen *screen = QGuiApplication::primaryScreen();
    if (screen) {
        // 截取整个屏幕
        QPixmap screenshot = screen->grabWindow(0);


        // 可选择保存路径和文件名
        QString fileName = QFileDialog::getSaveFileName(nullptr, "保存截图",
                                                        QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss") + ".png",
                                                        "Images (*.png *.xpm *.jpg)");


        if (!fileName.isEmpty()) {
            // 保存截图
            screenshot.save(fileName);
        }
    }
  • 全屏截图加水印
cpp 复制代码
 QScreen *screen = QGuiApplication::primaryScreen();
    if (screen) {
        // 截取整个屏幕
        QPixmap screenshot = screen->grabWindow(0);


        // 创建 QPainter 对象在截图上绘制
        QPainter painter(&screenshot);


        // 设置水印样式
        painter.setPen(QColor(255, 0, 0, 128)); // 红色,透明度为128
        painter.setFont(QFont("Arial", 30, QFont::Bold));


        // 添加水印文本
        QString watermarkText = "小gpt";
        painter.drawText(screenshot.rect(), Qt::AlignVCenter | Qt::AlignHCenter, watermarkText);


        // 结束绘制
        painter.end();


        // 可选择保存路径和文件名
        QString fileName = QFileDialog::getSaveFileName(nullptr, "保存截图",
                                                        QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss") + ".png",
                                                        "Images (*.png *.xpm *.jpg)");


        if (!fileName.isEmpty()) {
            // 保存带水印的截图
            screenshot.save(fileName);
        }
    }
相关推荐
黑马程序员毕设8 小时前
基于Java的仪器管理系统设计与实现
java·开发语言·spring boot·后端·微信小程序
平头哥AI8 小时前
Day 13 | 一个函数回两个值:Go 的 error 是从哪冒出来的
开发语言·后端·golang
asdzx678 小时前
Python 实现 PDF 文本查找与高亮标注
开发语言·python·pdf
zander2588 小时前
LeetCode 1143. 最长公共子序列
开发语言·python·算法
Sumerking8 小时前
llc_control.c 专项评审(v3 更新版)
c语言·开发语言·算法·obc
棣廷9 小时前
初识Python面向对象
java·开发语言
研☆香9 小时前
js中 onload 事件的用法
开发语言·javascript·ecmascript
xiancai_xianyu9 小时前
想把数据模型一次建完美再上AI?会一直卡在建模里
开发语言·人工智能·php·数据模型·语义层·本体建模·企业知识网络
(Charon)9 小时前
【C++】网络缓冲区设计(二):Ring Buffer环形缓冲区、head/tail与跨界读写
开发语言·c++
Java后端的Ai之路9 小时前
LangChain Deep Agents 从入门到企业实战
开发语言·人工智能·python·langchain·deepagents