原創(chuàng)|使用教程|編輯:龔雪|2013-12-05 15:02:27.000|閱讀 4439 次
概述:NCReport是一款輕量級(jí)、快速、多平臺(tái)、簡(jiǎn)單易用的基于Qt toolkit的C++編寫的報(bào)表解決方案,目前主要包括報(bào)表渲染庫和報(bào)表設(shè)計(jì)器GUI應(yīng)用程序。但是好多使用NCReport控件的朋友都不知道如何在Qt應(yīng)用程序中使用,本文詳細(xì)的來說明一下。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
NCReport是一款輕量級(jí)、快速、多平臺(tái)、簡(jiǎn)單易用的基于Qt toolkit的C++編寫的報(bào)表解決方案,目前主要包括報(bào)表渲染庫和報(bào)表設(shè)計(jì)器GUI應(yīng)用程序。
但是好多使用NCReport控件的朋友都不知道如何在Qt應(yīng)用程序中使用,本文詳細(xì)的來說明一下。
一、添加NCReport庫到應(yīng)用程序中。
在項(xiàng)目應(yīng)用程序中使用NCReport,需要先將報(bào)表控件集成到應(yīng)用程序中去,下面有兩種方式可以采用:
1、添加所有的靜態(tài)資源到你的項(xiàng)目中,并用你的應(yīng)用程序一起構(gòu)建。在這種情況下,你不需要NCReport分享的庫。打開你的.pro項(xiàng)目文件,并像testapp/testapp.pro做的添加全部的源包到項(xiàng)目中。
2、將NCReport作為分享的庫使用。要在你的項(xiàng)目中將NCReport庫像其他的庫一樣使用,你需要在你的項(xiàng)目文件中指定它們。
下面的項(xiàng)目示例中展示了一些必要的設(shè)置:
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 }
二、初始化NCReport類
本步驟中主要是說明如何初始化NCReport類。 首先需要添加includes.來包含模塊類定義,可以使用下面的代碼實(shí)現(xiàn):
#include "ncreport.h" #include "ncreportoutput.h" #include "ncreportpreviewoutput.h" #include "ncreportpreviewwindow.h"
創(chuàng)建NCReport類。可以用下面的代碼創(chuàng)建一個(gè)類似于另一個(gè)QObject基礎(chǔ)類的報(bào)表類:
NCReport report = new NCReport();
如果之前已經(jīng)創(chuàng)建了NCReport對(duì)象,并傳遞了一個(gè)參數(shù),這時(shí)初始化報(bào)表就需要調(diào)用reset()方法:
report->reset(); //or report->reset(true);
NCReport::reset()函數(shù)將會(huì)刪除所有的對(duì)象引用,并使得報(bào)表引擎可以再次運(yùn)行報(bào)表。如果參數(shù)設(shè)置為true,那么報(bào)表參數(shù)、添加的數(shù)據(jù)源比如QStringLists、自定義項(xiàng)目都將會(huì)被刪除。
三、設(shè)置報(bào)表源
報(bào)表源意思就是NCReport處理XML報(bào)表定義的方法。報(bào)表定義可能從文件打開,但是也可以從一個(gè)SQL數(shù)據(jù)庫表導(dǎo)入,下面額示例就是提供了一個(gè)作為報(bào)表源的文件:
report->setReportFile( fileName );
上面的這段代碼相當(dāng)于下面的代碼:
report->setReportSource( NCReportSource::File ); report->reportSource()->setFileName( fileName );
四、添加參數(shù)
使用addParameter方法可以添加參數(shù)到NCReport中,這個(gè)參數(shù)的ID是一個(gè)字符串,值是一個(gè)QVariant對(duì)象。
report->addParameter( "id", QVariant("value") );
上面的這段代碼相當(dāng)于下面的這段代碼:
report->addParameter( "paramID", "Parameter value" );
五、運(yùn)行報(bào)表
現(xiàn)在就可以運(yùn)行報(bào)表為不同的輸出。
將報(bào)表運(yùn)行為打印:
report->runReportToPrinter();
將報(bào)表運(yùn)行為PDF:
QString fileName("mypdffile.pdf"); report->runReportToPDF( fileName );
將報(bào)表運(yùn)行為打印預(yù)覽:
report->runReportToPreview();
如果你運(yùn)行報(bào)表為預(yù)覽,結(jié)果將會(huì)用一個(gè)NCReportPreviewOutput對(duì)象保存,報(bào)表引擎不會(huì)自動(dòng)運(yùn)行預(yù)覽,在報(bào)表引擎成功實(shí)現(xiàn)之后,我們需要初始化一個(gè)NCReportPreviewWindow對(duì)象用于預(yù)覽。但是在做之前需要檢查,報(bào)表是否發(fā)生作為錯(cuò)誤。
if ( !report->hasError() ) { NCReportPreviewWindow pv = new NCReportPreviewWindow(); * pv->setOutput( (NCReportPreviewOutput )report->output() ); * pv->setWindowModality( Qt::ApplicationModal ); pv->setAttribute( Qt::WA_DeleteOnClose ); pv->show(); } else { QMessageBox::warning( tr("Error"); }
使用NCReport::output()函數(shù)得到當(dāng)前的輸出:
六、錯(cuò)誤處理
可以使用下面的函數(shù)來捕捉錯(cuò)誤:
bool error = report->hasError(); QString errormsg = report->;lastErrorMsg();
七、刪除報(bào)表對(duì)象
在報(bào)表運(yùn)行操作之后,就可以刪除報(bào)表對(duì)象了,當(dāng)NCReport刪除之后,所有的子對(duì)象也都將會(huì)被刪除:
delete report;
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件