qt 打印html 分页打印,关于解决QTableView分页打印实现方法(仿Excel)

本文介绍如何在Qt中解决QTableView的分页打印问题,通过计算表格的行和列数,以及每页的起始位置和区域大小,实现仿Excel的分页效果。关键步骤包括计算行页数、列页数、页面宽度和高度,并在QPainter中进行分块绘制。
摘要由CSDN通过智能技术生成

通过Qt开发电子报表软件,在打印问题上遇到难题,参考网上的方法,很少,几乎没有相关的解决方法!只有自力更生了,结合QT自带实例spreadsheet, 打印只能实现当前页的打印,并不能实现分页,分区域打印。

void PrintView::print(QPrinter *printer)

{

#ifndef QT_NO_PRINTER

resize(printer->width(), printer->height());

render(printer);

}

例子上的函数如上, 看到render函数,是把当前tableview内容绘制到打印机上。灵感即来于此!整体思路是把tableview根据打印机尺寸划分打印区域,把打印区域分块绘制到打印机上,每个区域作为一页。

具体看代码:

1. 计算行页数,及每页起始行号及区域高度

void PrintView::CalcultPrintAreaRow(int h, int &pageCount, QVector &printAreaStartRow, QVector &printAreaHeight)

{

int pix_height = 0;

QAbstractItemModel *item_model = this->model();

if (item_model == NULL) return;

QHeaderView *headerView = this->horizontalHeader ();

if (headerView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值