QT代实现将截屏保存为图片实践

使用QGuiApplication::primaryScreen()可以取得当前屏幕,取得将QScreen->grabWindow(0)存入QPixmap即可。

这里可以看到QT的封装非常方便我们取得屏幕截图。

 开始截屏 按扭代码

void TestWidget::on_pushButton_clicked()
{
    this->hide();//隐藏当前窗口
    Sleep(300);//延时
    //QPixmap  screenPixmap = QPixmap();
    QScreen *scr = QGuiApplication::primaryScreen();
    if (scr)
    {
        screenPixmap = scr->grabWindow(0);
        QLabel *lb=ui->label;
        lb->setPixmap(screenPixmap);
        lb->setScaledContents(true);
    }
    this->show();//显示当前窗口
}

保存为 按扭代码

void TestWidget::on_pushButton_2_clicked()
{
    QDateTime current_date_time = QDateTime::currentDateTime();
    QString current_date = current_date_time.toString("yyyyMMddhhmmsszzz");
    QString format = "jpg";
    QString currentPath = QDir::currentPath() + tr("/截屏")+current_date+tr(".") + format;

    QString fileName = QFileDialog::getSaveFileName(this, tr("保存为..."), currentPath,
                                                    tr("%1 文件(*.%2);;所有文件(*)")
                                                    .arg(format.toUpper())
                                                    .arg(format));
    if (!fileName.isEmpty())
           screenPixmap.save(fileName, format.toLatin1().constData());
}

测试效果

QT实现将截屏保存为图片实践_屏幕截图