2009年12月18日

[QT] Print widget && Save widget to image file

1.Print QWidget

QPrinter printer(QPrinter::ScreenResolution);
QPrintDialog *dialog = new QPrintDialog(&printer, this);
dialog->setWindowTitle(tr("Print Document"));

if (dialog->exec() != QDialog::Accepted)
return;

QPainter painter;
QPixmap pix = QPixmap::grabWidget(ui.tabWidget->currentWidget());
painter.begin(&printer);
painter.drawPixmap(0,0,pix);
painter.end();


2.Save QWidget to image file

QPixmap pix;
pix = QPixmap::grabWidget(ui.tabWidget->currentWidget());

QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"",tr("Images(*.jpg)"));

if(!fileName.isEmpty()) {
if(!pix.save(fileName,"JPG",100)) {
QMessageBox::warning(this,tr("Error"),tr("Can not save image file!"));
}else {
QMessageBox::information(this,tr("Info"),tr("Save OK."));
}
}