// 生成PDF文件 QPrinter printer; QPixmap image; // QPainter painter(&printer); image = image.grabWidget(this,0,0,210,297); QString fileName = QFileDialog::getSaveFileName(this, tr("导出PDF文件"), QString(), "*.pdf"); if (!fileName.isEmpty()) { // 如果文件后缀为空,则默认使用.pdf if (QFileInfo(fileName).suffix().isEmpty()) fileName.append(".pdf"); // 指定输出格式为pdf // printer.setOutputFormat(QPrinter::PdfFormat); // printer.setPageSize(QPrinter::A4); // printer.setOutputFileName(fileName); // painter.drawPixmap(0,0,image); // QPainter painter(&printer); // QRect rect = painter.viewport(); // QSize size = image.size(); // size.scale(rect.size(), Qt::KeepAspectRatio); // painter.setViewport(rect.x(), rect.y(), // size.width(), size.height()); // painter.setWindow(image.rect()); // painter.drawPixmap(0, 0, image); // printer.setOutputFileName(fileName); // printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(fileName); QPixmap pixmap=QPixmap::grabWidget(ui->widget,ui->widget->rect()); //抓取界面widget区域,可以抓取任意控件区域,Qt5推荐新的API QWidget::grab QPainter painter; painter.begin(&printer); QRect rect=painter.viewport(); //获取painter的视口区域 int factor=rect.width()/pixmap.width(); //计算painter视口区域与抓取图片区域的尺寸比例因子 painter.scale(factor*1.3,factor*1.3); //绘制时按照比例因子放大 // painter.drawPixmap(10,10,pixmap); //按照坐标画图 painter.drawPixmap(0,0,pixmap); //按照坐标画图 printer.setPageSize(QPrinter::A4); printer.setOutputFormat(QPrinter::PdfFormat); // printer.newPage(); //另起一页 //pic_painter.scale(1,1); //回复比例,否则字体很大不正常,此步貌似不需要 // pic_painter.drawText(10,10,"this is another page"); //图文混排 // pic_painter.end(); }
Qt打印widget显示内容
猜你喜欢
转载自www.cnblogs.com/mc-r/p/12717578.html
今日推荐
周排行