Может я неверно вопрос понял, но не вижу в чем трудность.
Создаете многостраничный шаблон отчета, в программе определяете callbackDataSource, и слот, который соединияете с сигналом getCallbackData для этого источника данных. Ниже из программы пример
где-то при инициализации экземпляра LimeReport
m_studentDataSource=m_report->dataManager()->createCallbackDatasouce("students");
connect(m_studentDataSource,SIGNAL(getCallbackData(LimeReport::CallbackInfo,QVariant&)),this,SLOT(getStudentCallbackData(LimeReport::CallbackInfo,QVariant&)));
connect(m_studentDataSource,SIGNAL(changePos(LimeReport::CallbackInfo::ChangePosType,bool&)),this,SLOT(changeStudentPos(LimeReport::CallbackInfo::ChangePosType,bool&)));
сами методы
void TMainWnd::getStudentCallbackData(LimeReport::CallbackInfo info, QVariant &value)
{
switch (info.dataType)
{
case LimeReport::CallbackInfo::IsEmpty:
{
value=(m_selected.size()==0);
break;
}
case LimeReport::CallbackInfo::HasNext:
{
value=(m_selected.size() && m_current<m_selected.size()-1 && m_current>-1);
break;
}
case LimeReport::CallbackInfo::RowCount:
{
value=m_selected.size();
break;
}
case LimeReport::CallbackInfo::ColumnCount:
{
value=m_studentModel->columnCount();
break;
}
case LimeReport::CallbackInfo::ColumnHeaderData:
{
value=m_studentModel->record().fieldName(info.index);
break;
}
case LimeReport::CallbackInfo::ColumnData:
{
if (m_selected.size())
{
QSqlRecord record=m_studentModel->record(m_selected.at(m_current).row());
value=record.value(info.columnName);
}
else
value=QVariant();
break;
}
}
return;
}
//
void TMainWnd::changeStudentPos(const LimeReport::CallbackInfo::ChangePosType type, bool &result)
{
switch (type)
{
case LimeReport::CallbackInfo::First:
{
result=(m_selected.size() && m_current==0);
break;
}
case LimeReport::CallbackInfo::Next:
{
result=(m_selected.size() && m_current<m_selected.size()-1 && m_current>-1);
m_current++;
break;
}
}
return;
}
m_selected здесь - это выделенные записи из selectionModel таблицы-представления. m_current - текущая обрабатываемая запись.
В документации LM вроде об этом написано вообще