1 准备好打印设备 QPrinter
QPrinter printer; printer.setOutputFormat(QPrinter::PdfFormat);//设置输出格式为pdf printer.setPageSize(QPrinter::A4);//设置纸张大小为A4 printer.setOutputFileName("test.pdf");//设置输出路径
2 将 绘制 链接到 打印设备上 QPainter
QPainter painter; painter.begin(&printer); //正常使用painter 绘制文字、pixmap等在printer上 .... //至此,文件被保存 painter.end();
3 绘制过程中 绘制文字、绘制line 、绘制pixmap 、绘制QRect
//文字 painter.setFont(Nstr->font); painter.drawText(Nstr->pos, Nstr->str); //line QPen pen; pen.setWidth(Nlin->pointsize); painter.drawLine(Nlin->pos1 , Nlin->pos2); //pixmap //QRect rect = painter.viewport(); //int multiple = rect.width()/Npix->pixmap.width(); //使用scale拉伸,效果并不好,总会影响其他输出,推荐只使用Rect得到大小,让pixmap绘制到Rect内,自动填充。 //painter.scale(multiple, multiple); painter.drawPixmap(Npix->rect, Npix->pixmap); pen.setColor(Qt::red); brush.setColor(Qt::red); brush.setStyle(Qt::SolidPattern); painter.setBrush(brush); painter.setPen(pen); painter.drawRect(Nrec->rect);
注意:
1 drawPixmap 时 使用painter.scale(sx , sy); 拉伸图像适应pdf窗体时,一定要使用之后立刻 scale(1 , 1); 不然文字什么的都会发生拉伸。
2 QBrush 的使用 并不仅仅是setColor() 就可以了,必须还要设置setStyle();
QPen style
时间: 2024-11-04 22:38:00