QT报表开发(limereport + QAbstractTableModel)

一、简介

limereport是俄罗斯人QT开发的报表设计器,功能很强大,简单容易上手。网上有编译和读取数据库的教程,在此我不累述,本文主要介绍通过Qt的tablemode加载数据。

二、主要代码

1)重新了QAbstractTableModel通过,数据封装在结构体里。

    AlarmQueryModel *m_pModelAlarmQuery = new AlarmQueryModel();
    QList<Stu_Alarm_Info> listInfo;
    Stu_Alarm_Info STUINFO;
    STUINFO.iTotalPage = 1;
    STUINFO.strAlarmid = "strAlarmid ";
    STUINFO.strEcscode = "strEcscode ";
    STUINFO.strDevid = "strDevid ";
    STUINFO.strAlarmCode = "strAlarmCode ";
    STUINFO.strAlarmtype = "strAlarmtype ";
    STUINFO.strAlarmgrade = "strAlarmgrade ";
    STUINFO.strAlarmDate = "strAlarmDate ";
    STUINFO.strAlarmDesc = "strAlarmDesc ";

     listInfo.insert(0 ,STUINFO );
     listInfo.insert(1 ,STUINFO1 );
     listInfo.insert(2 ,STUINFO );
     listInfo.insert(3 ,STUINFO );

    m_pModelAlarmQuery->setModelData(listInfo);

2)向LimeReport添加tablemodel

    report = new LimeReport::ReportEngine(this);  //to create reportengine
    report->dataManager()->addModel("周报",m_pModelAlarmQuery,false);
    report->dataManager()->addModel( "月报",m_pModelAlarmQuery,false);
    report->dataManager()->addModel("年报",m_pModelAlarmQuery,false);
    report->dataManager()->addModel("m_pModelAlarmQuery",m_pModelAlarmQuery,false);  //to add datasource to report engine
    report->loadFromFile("D:\\1.lrxml");  //to load report template file

报表设计其中就会显示添加的model了

3)设计报表

选择数据块,并向DataBand中放入model参数,

 

 预览后发现只有一条数据

 选中DataBand,修改数据源,再预览即可展示你写入model的数据了

 

 代码如下https://download.csdn.net/download/qq_22000089/87006486

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,QTableView是一种用于显示表格数据的控件,而QAbstractTableModelQTableView使用的一种数据模型。如果想要在QTableView中展示自定义的数据,需要自定义一个继承自QAbstractTableModel的数据模型。 自定义QAbstractTableModel需要实现以下几个方法: 1. rowCount():返回数据模型中的行数。 2. columnCount():返回数据模型中的列数。 3. data():返回某一项的数据,可以用来在QTableView中展示数据。 4. setData():设置某一项的数据,可以用来在QTableView中编辑数据。 5. headerData():返回行或列的标签,可以用来在QTableView中显示表头。 6. flags():返回某一项的标志,用来指定该项是否可编辑、是否可选中等。 自定义QAbstractTableModel类后,可以将其与QTableView关联,通过setModel()方法来设置数据模型,使QTableView显示自定义的数据。 下面是一个简单的自定义QAbstractTableModel的例子: ```c++ class MyTableModel : public QAbstractTableModel { public: MyTableModel(QObject *parent = nullptr); int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; Qt::ItemFlags flags(const QModelIndex &index) const override; private: QList<QList<QVariant>> m_data; }; ``` 在这个例子中,自定义的数据模型类为MyTableModel,其中实现了rowCount()、columnCount()、data()、setData()、headerData()和flags()方法。m_data变量用于存储数据。自定义的数据模型类可以在需要使用表格数据的地方创建,并通过setModel()方法将其与QTableView关联起来。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值