QT/C++ QPdfWriter横纵(竖)版混排

本文介绍了如何在项目中使用QPainter和QPdfWriter库,根据数据库数据动态创建折线图、表格,并根据不同页面需求调整为横版或竖版排版,以优化PDF文档的视觉效果。
摘要由CSDN通过智能技术生成

一、背景:

1、项目中需要根据数据库数据生成折线图、表格、图片,并将内容打印在pdf文档中。

2、由于表格数据内容较多,A4竖版排版数据显示较拥挤,若全部采用横版其他页面又会不美观。

二、需求:

将表格所在页进行横版排版,其他页面保持竖版排版。

三、关键代码:

    myPainter = new QPainter();
	writer = new QPdfWriter(pdfFileName);

	writer->setPageSize(QPageSize(QPageSize::A4)); 
	//设置首页为竖版
	writer->setPageOrientation(QPageLayout::Portrait);
	writer->setResolution(300);
	writer->setPageMargins(QMarginsF(30, 30, 30, 30));

	myPainter->begin(writer);
	myPainter->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

	int nPdfWidth = myPainter->viewport().width();
	int nPdfHeight = myPainter->viewport().height();

	//draw title
	myPainter->setFont(QFont(QString::fromLocal8Bit("黑体"), 18, 36));
	myPainter->drawText(QRect(0, line_pos, nPdfWidth, 100), Qt::AlignCenter, title_name);

	// draw chart
    ...

	//先设置第二页为横版
	writer->setPageOrientation(QPageLayout::Landscape);
    //开启新页
	writer->newPage();

	//draw table tile
    ...
	//draw table content
    ...

    //先设置第三页为竖版
	writer->setPageOrientation(QPageLayout::Portrait);
    //开启新页
	writer->newPage();
    ...

四、实现效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_learnWay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值