Qt实现窗口截图功能
作者:小gpt&
这篇文章主要为大家详细介绍了如何使用Qt实现简单的窗口截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
截取窗口:适用做视频通话截图
QScreen *screen=QGuiApplication::primaryScreen();
QPixmap pixmap=screen->grabWindow(ui->widget->winId());//ui->widget->winId()你需要截图的窗口id
pixmap.save("./1.jpg","jpg");

全屏截图
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);
}
}

全屏截图加水印
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);
}
}

到此这篇关于Qt实现窗口截图功能的文章就介绍到这了,更多相关Qt窗口截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
