NCReport整合进Qt 应用

前言

这篇博客基于《NCReport Definitive Guide》3.4节进行翻译,如需要更完整理解可自行翻译。

添加NCReport库到项目

在关于NCReport报表的第一博客中就详细介绍了如何将NCReport库添加到VS工程,如有需要请翻阅前面博客。
(1)初始化NCReport类,添加如下头文件

#include "ncreport.h"
#include "ncreportoutput.h"
#include "ncreportpreviewoutput.h"
#include "ncreportpreviewwindow.h"

创建NCReport类,正如创建其他Qt对象。

NCReport *report = new NCReport();

如果NCReport已经被创建,可以用reset()函数进行重设。

report->reset();
//or
report->reset(true);

NCReport::reset()函数将删除所有对象信息,确定报表引擎可以再次运行一个报表。
(2)设置报表的源
报表源指的是定义的报表XML文件。在我们的例子里我们用File作为报表源。

report->setReportFile(fileName);

这行代码等价于:

report->setReportSource(NCReportSource::File);
report->setportSource(fileName);

(3)增加参数
使用addParameter 函数增加一个参数到NCReport。参数“id”是一个字符串,值是一个QVariant对象。

report->addParameter( "id", QVariant("value") );

你也可以使用相似的不同数据类型:

report->addParameter( "par1", "String Parameter" );
report->addParameter( "par2", 5.687 );
report->addParameter( "par3", 1024 );
report->addParameter( "par4", QDate::currentDate() );

(4)运行报表
运行报表到打印机

report->runReportToPrinter();

运行报表到PDF

QString fileName("mypdffile.pdf");
report->runReportToPDF( fileName );

运行报表到打印预览

report->runReportToPreview();

如果你采取预览报表,结果将保存在一个NCReportPreviewOutput对象。在预览报表之前我们要检查是否报表有错误发生。

if ( !report->hasError() ) {
NCReportPreviewWindow *pv = new NCReportPreviewWindow();
pv->setOutput( (NCReportPreviewOutput*)report->output() );
pv->setWindowModality( Qt::ApplicationModal );
pv->setAttribute( Qt::WA_DeleteOnClose );
pv->setReport( report ); // sets the report objects
pv->exec();
} else {
QMessageBox::warning( tr("Error");
}

(5)错误处理
使用下面函数捕获发生的错误。

bool error = report->hasError();
QString errormsg = report->lastErrorMsg();

(6)删除报表对象
当NCReport对象被删除所有的子对象也将被删除。

delete report;

警告:不要删除NCReport对象,如果NCReportPreviewWindow对象一直存在,如果你想再一次使用报表对象那就不要删除,仅仅使用MCReport::reset()函数即可。

结语

这篇博客对常用语法进行了讲解。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值