Qt:将整个QScrollArea内容保存为图像

时间:2014-02-03 10:50:24

标签: c++ qt

我正在尝试将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的全部内容,以便图像显示整个内容,而不仅仅是其中的一部分?

1 个答案:

答案 0 :(得分:0)

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