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);
        }
    }
相关推荐
一只会飞的猪_12 分钟前
国密加密golang加密,java解密
java·开发语言·golang
四念处茫茫26 分钟前
【C语言系列】深入理解指针(2)
c语言·开发语言·visual studio
LucianaiB32 分钟前
C语言之图像文件的属性
c语言·开发语言·microsoft·c语言之图像文件的属性
向着开发进攻33 分钟前
深入理解 Java 并发编程中的锁机制
java·开发语言
CURRY30_HJH38 分钟前
JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。
java·开发语言
千千道40 分钟前
QT 中 UDP 的使用
开发语言·qt·udp
C++小厨神2 小时前
MATLAB语言的编程范式
开发语言·后端·golang
chengxuyuan666662 小时前
JAVA基础语句整理
java·开发语言·python
别人家的孩子3802 小时前
EE213 Lab2 hspice simulation R/C-V Characteristics
开发语言·python
小丁爱养花2 小时前
Spring MVC:设置响应
java·开发语言·前端