使用报表控件NCReport集成NCReport到Qt应用程序

NCReport是一款轻量级、快速、多平台、简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序。

但是好多使用NCReport控件的朋友都不知道如何在Qt应用程序中使用,本文详细的来说明一下。

  1. 一、添加NCReport库到应用程序中。

在项目应用程序中使用NCReport,需要先将报表控件集成到应用程序中去,下面有两种方式可以采用:

  • 1、添加所有的静态资源到你的项目中,并用你的应用程序一起构建。在这种情况下,你不需要NCReport分享的库。打开你的.pro项目文件,并像testapp/testapp.pro做的添加全部的源包到项目中。

  • 2、将NCReport作为分享的库使用。要在你的项目中将NCReport库像其他的库一样使用,你需要在你的项目文件中指定它们。

下面的项目示例中展示了一些必要的设置:

   

QT = xml sql gui core

TEMPLATE = app

CONFIG += warn_on \

qt \

thread\

release

TARGET = MyApplication

INCLUDEPATH = ../ncreport/includes

HEADERS += ...

SOURCES += ...

win32 {

LIBS += ../lib/ncreport2.lib

}

unix {

LIBS += -lncreport -L../lib -L/usr/local/bin

target.path = /usr/local/bin

}

   

  1. 二、初始化NCReport类

本步骤中主要是说明如何初始化NCReport类。 首先需要添加includes.来包含模块类定义,可以使用下面的代码实现:

#include "ncreport.h"

#include "ncreportoutput.h"

#include "ncreportpreviewoutput.h"

#include "ncreportpreviewwindow.h"

   

创建NCReport类。可以用下面的代码创建一个类似于另一个QObject基础类的报表类:

  

NCReport report = newNCReport();

   

如果之前已经创建了NCReport对象,并传递了一个参数,这时初始化报表就需要调用reset()方法:

 

report->reset();

//or

report->reset(true);

   

NCReport::reset()函数将会删除所有的对象引用,并使得报表引擎可以再次运行报表。如果参数设置为true,那么报表参数、添加的数据源比如QStringLists、自定义项目都将会被删除。

  1. 三、设置报表源

报表源意思就是NCReport处理XML报表定义的方法。报表定义可能从文件打开,但是也可以从一个SQL数据库表导入,下面额示例就是提供了一个作为报表源的文件:

report->setReportFile( fileName );

   

上面的这段代码相当于下面的代码:

report->setReportSource( NCReportSource::File );

report->reportSource()->setFileName( fileName );

   

  1. 四、添加参数

使用addParameter方法可以添加参数到NCReport中,这个参数的ID是一个字符串,值是一个QVariant对象。

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

   

上面的这段代码相当于下面的这段代码:

report->addParameter( "paramID", "Parameter value");

   

  1. 五、运行报表

现在就可以运行报表为不同的输出。

将报表运行为打印:

report->runReportToPrinter();

   

将报表运行为PDF:

QString fileName("mypdffile.pdf");

report->runReportToPDF( fileName );

   

将报表运行为打印预览: 

report->runReportToPreview();

   

如果你运行报表为预览,结果将会用一个NCReportPreviewOutput对象保存,报表引擎不会自动运行预览,在报表引擎成功实现之后,我们需要初始化一个NCReportPreviewWindow对象用于预览。但是在做之前需要检查,报表是否发生作为错误。

if( !report->hasError() ) {

NCReportPreviewWindow pv = newNCReportPreviewWindow();

*

pv->setOutput( (NCReportPreviewOutput )report->output() );

*

pv->setWindowModality( Qt::ApplicationModal );

pv->setAttribute( Qt::WA_DeleteOnClose );

pv->show();

} else{

QMessageBox::warning( tr("Error");

}

   

使用NCReport::output()函数得到当前的输出:

  1. 六、错误处理

可以使用下面的函数来捕捉错误:

boolerror = report->hasError();

QString errormsg = report->;lastErrorMsg();

   

  1. 七、删除报表对象

在报表运行操作之后,就可以删除报表对象了,当NCReport删除之后,所有的子对象也都将会被删除: 

delete report;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值