QT:将整个QSCrollarea内容作为图像保存

Qt: save entire QScrollArea contents as an image

本文关键字:图像 保存 QSCrollarea QT      更新时间:2023-10-16

我试图保存QSCrollarea的内容作为图像。目前,我这样做...

QPixmap pixmap(ui->overview->rect().size());
ui->overview->render(&pixmap, QPoint(),QRegion(ui->overview->rect()));
QString saveFilename = QFileDialog::getSaveFileName(this, "Save as", "Choose a filename","PNG(*.png);; TIFF(*.tiff *.tif);; JPEG(*.jpg *.jpeg)");
if(!pixmap.save(saveFilename))
{
    QMessageBox::warning(this, "Error","File could not be saved", QMessageBox::Ok);
}

但是,如果内容超过一个屏幕(并且您需要滚动以查看整个图像),我保存下来,该图像仅显示当前在屏幕上的一部分。

如何保存scrollarea的完整内容,以便图像显示整个内容,而不仅仅是其中的一部分?

QImage img(ui->scrollAreaWidgetContents->size(),QImage::Format::Format_ARGB32);
QPainter painter(&img);
ui->scrollAreaWidgetContents->render(&painter);
bool istrue = img.save("/file.jpg");