QT开发中文网

Qt实现截图

Qt实现截图的步骤如下:

  1. 创建一个QWidget或QWindow对象,并确保它已经被显示出来。

  2. 使用QPixmap::grabWindow()函数获取窗口对象的截图。该函数需要传入窗口对象的句柄、左上角的x、y坐标以及截图的宽度和高度。

  3. 将截图保存为PNG或JPEG格式的文件,可以使用QImageWriter类。

下面是一个基于QMainWindow的例子:

#include <QtWidgets>

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
        QPushButton *button = new QPushButton("截图", this);
        button->move(50, 50);
        connect(button, &QPushButton::clicked, this, &MainWindow::takeScreenshot);
    }

private slots:
    void takeScreenshot() {
        QScreen *screen = QGuiApplication::primaryScreen();
        if (screen) {
            QPixmap pixmap = screen->grabWindow(QApplication::desktop()->winId(),
                                                x() + 50, y() + 50,
                                                width() - 100, height() - 100);
            QString filename = QFileDialog::getSaveFileName(this, "保存截图", ".", "Images (*.png *.jpg)");
            if (!filename.isEmpty()) {
                QImageWriter writer(filename);
                writer.write(pixmap.toImage());
            }
        }
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    MainWindow window;
    window.show();

    return app.exec();
}

#include "main.moc"

在这个例子中,我们创建了一个QPushButton,并将其放置在QMainWindow中。当用户点击按钮时,我们使用QScreen::grabWindow()函数获取整个桌面(即QApplication::desktop()->winId()),并从左上角偏移50像素,截取宽度和高度减去100像素的区域。然后,我们使用QFileDialog让用户选择保存截图的位置和格式,并使用QImageWriter将pixmap转换为图像并保存到指定的文件中。

注意,如果您想截取QWidget或QLabel等对象的截图,只需将第一个参数传递给QWidget::winId()即可。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=265

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?