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);
        }
    }
相关推荐
许苑向上35 分钟前
Java八股文(下)
java·开发语言
菜鸟一枚在这40 分钟前
深入解析设计模式之单例模式
开发语言·javascript·单例模式
独孤求败Ace43 分钟前
第44天:Web开发-JavaEE应用&反射机制&类加载器&利用链&成员变量&构造方法&抽象方法
java·开发语言
计算机-秋大田1 小时前
基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)
java·开发语言·spring boot·后端·spring·课程设计
matlabgoodboy1 小时前
Matlab代编电气仿真电力电子电机控制自动化新能源微电网储能能量
开发语言·matlab·自动化
镰圈量化1 小时前
当电脑上有几个python版本Vscode选择特定版本python
开发语言·vscode·python
背太阳的牧羊人2 小时前
RAG检索中使用一个 长上下文重排序器(Long Context Reorder) 对检索到的文档进行进一步的处理和排序,优化输出顺序
开发语言·人工智能·python·langchain·rag
ITPUB-微风2 小时前
美团MTSQL特性解析:技术深度与应用广度的完美结合
java·服务器·开发语言
Want5952 小时前
C/C++跳动的爱心
c语言·开发语言·c++
水瓶丫头站住2 小时前
Qt中QDockWidget的使用方式
开发语言·qt