码迷,mamicode.com
首页 > 其他好文 > 详细

Qt -QPrinter - Pdf [Qt QPrinter 绘制内容 到 PDF文件]

时间:2016-10-25 13:54:59      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:family   .com   att   test   ges   print   pos   microsoft   str   

 

 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

技术分享

 

Qt -QPrinter - Pdf [Qt QPrinter 绘制内容 到 PDF文件]

标签:family   .com   att   test   ges   print   pos   microsoft   str   

原文地址:http://www.cnblogs.com/hisoka/p/5996154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!