Qt實現窗口截圖功能
更新時間:2024年11月19日 10:39:59 作者:小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);
// 創(chuàng)建 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窗口截圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

