Qt實現(xiàn)窗口截圖功能
更新時間:2024年11月19日 10:39:59 作者:小gpt&
這篇文章主要為大家詳細介紹了如何使用Qt實現(xiàn)簡單的窗口截圖功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
截取窗口:適用做視頻通話截圖
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);
// 設(shè)置水印樣式
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);
// 結(jié)束繪制
painter.end();
// 可選擇保存路徑和文件名
QString fileName = QFileDialog::getSaveFileName(nullptr, "保存截圖",
QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss") + ".png",
"Images (*.png *.xpm *.jpg)");
if (!fileName.isEmpty()) {
// 保存帶水印的截圖
screenshot.save(fileName);
}
}

到此這篇關(guān)于Qt實現(xiàn)窗口截圖功能的文章就介紹到這了,更多相關(guān)Qt窗口截圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Visual Studio 2019創(chuàng)建C++ Hello World項目的方法
這篇文章主要介紹了Visual Studio 2019創(chuàng)建C++ Hello World項目的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
C語言左旋轉(zhuǎn)字符串與翻轉(zhuǎn)字符串中單詞順序的方法
這篇文章主要介紹了C語言左旋轉(zhuǎn)字符串與翻轉(zhuǎn)字符串中單詞順序的方法,給出了相關(guān)的兩道算法題目作為例子,需要的朋友可以參考下2016-02-02

