QT打印,打印预览

3 篇文章 0 订阅

1:使用方法:
QTextDocument是Qt的多文本引擎,使用QTextDocument调用打印,以及打印预览

//打印需要的头文件
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
//打印预览需要的头文件
#include <QPrintPreviewDialog>
//print打印对应的槽函数
void test::print()
{
	//生成html文件
	QString fileContent = "";
	QFile file1(htmlfileName);   //htmlfileName:本地的制作好的html文件
	if (file1.open(QIODevice::ReadOnly))
	{
		QTextStream fs(&file1);
		fs.setCodec("UTF-8"); //Qt 使用 UTF-8 编码读取文件,解决打印的文件中文乱码
		fileContent = fs.readAll();
		file1.close();
	}
	QPrinter printer(QPrinter::HighResolution);
	QPrintDialog printDialog(&printer, this);
	if (printDialog.exec()) {
		QTextDocument textDocument;
		textDocument.setHtml(fileContent);
		textDocument.print(&printer);
	}
}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++打印预览+++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//打印预览
//调用QT自己带的阅览器
//点击打印预览文件对应的槽函数
void test::PrintPreviewFile()
{
	QPrinter printer(QPrinter::HighResolution);
	QPrintPreviewDialog preview(&printer, this);
	preview.setMinimumSize(1000, 600);
	//这里实现printPreviewSlot,就是预览显示内容
	connect(&preview, SIGNAL(paintRequested(QPrinter*)), SLOT(printPreviewSlot(QPrinter*)));
	preview.exec();
}
//在printPreviewSlot中实现阅览的内容
//这里使用的还是QTextDocument,将制作好的html加载上去
void test::printPreviewSlot(QPrinter *printer)
{
	//生成html文件
	QString fileContent = "";
	QFile file1(htmlfileName);   //htmlfileName:本地的制作好的html文件
	if (file1.open(QIODevice::ReadOnly))
	{
		QTextStream fs(&file1);
		fs.setCodec("UTF-8"); //Qt 使用 UTF-8 编码读取文件,解决打印的文件中文乱码
		fileContent = fs.readAll();
		file1.close();
	}
	QTextDocument textDocument;
	textDocument.setHtml(fileContent);
	textDocument.print(printer);
}
//关于打印阅览内容显示的相关问题
问题1:显示的图片不全,显示部分
原因:图片长宽像素太大,A4不能完全显示
解决:"<img src=\"%s\" width=\"%d\" height=\"%d\"/>\n" 指定长宽,无论多大小的图片都会按指定的width和height来显示
问题2:表格没有边框
原因:html中对表格边框未设置
解决:
<style type="text/css">
.test
{
//重点设置边框以及设置边框颜色为黑色
border-right-width:1px; border-right-style:solid; border-right-color:#000000;
border: 1px solid #000000;border-collapse:collapse;vertical-align:middle;
}
</style>
1:html的<table>标签设置
	"<table width=\"100%%\" border=\"1\" cellspacing=\"0\" cellpadding=\"1\" class=\"test\">\n"
2:tain添加带有边框的table头:test
	"<th align=center width=\"%d%%\" class=\"test\" height=\"15\">"
3:tain添加带有边框的table内容:
	"<td align=center width=\"%d%%\" class=\"test\" height=\"15\">"
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值