Все замечательно, собралось.
По ходу обнаружилось, что если собрать Qt в одном месте, а потом перенести в другое, то LimeReport не компилируется, поскольку достает старый путь к Qt откуда-то из Qt-файлов. Это не очень радует, т.к. мы практикуем однократную (10-часовую!) сборку Qt на одном компе и потом копирование по всему офису, а конкретные программисты кладут это Qt по разным папкам у себя. Может, есть какая-то настройка?
Но если все собирать у себя, то собралось.
Дальше вопросы вылезли.
1. Как избавиться от QtZint? Нам штрих-коды не нужны, не хотелось бы, чтобы в инсталлированной программе был мертвый груз.
2. Как сделать отчет на QAbstractDataModel (кстати, что такое QAbstractDataModel? Это видимо QAbstractItemModel с опечаткой?) В ваших примерах в LRDemo_r1.exe и в .pdf есть фрагмент:
QStringList simpleData;
simpleData << "value1" << "value2" << "value3";
QStringListModel* stringListModel = new QStringListModel();
stringListModel->setStringList(simpleData);
report->dataManager()->addModel("string_list",stringListModel,true);
- ну, собственно, а как эту модель теперь активировать? С помощью LRDemo_r1.exe какие кнопки ни нажимай, "value1", "value2" не увидишь.
Мне нужно что-то типа:
simple_list.lrxml
- но чтобы бралось не из SQL-БД, а из моих данных в памяти. Подозреваю, что надо заменить $D{customers.CompanyName} в simple_list.lrxml на что-то типа $D{string_list.CompanyName}? Но в QStringListModel нет колонок. Видимо, нужен QAbstractTableModel. Я создал такую:
class AbstractTableModel: public QAbstractTableModel
{
public:
AbstractTableModel()
{
}
int columnCount(const QModelIndex &parent) const { return 3; }
int rowCount(const QModelIndex &parent) const { return 4; }
virtual QVariant data(const QModelIndex &index, int role) const
{
return QVariant();
}
};
......
QAbstractTableModel *qatm= new AbstractTableModel;
report->dataManager()->addModel("table_list", qatm,true);
потом заменил в simple_list.lrxml customers на table_list, и попытался все впихнуть в свою программу. Получаю сообщения: "Field table_list.CompanyName not found". Понятно, что у меня функция data() пустая, но она даже не вызывается.