LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: maks_a on January 10, 2017, 02:15:49 PM

Title: как подключить проект на qt
Post by: maks_a on January 10, 2017, 02:15:49 PM
создал проект на qt widget
не понятно как к нему привентить репортер
к примеру в форму виджета добавить кнопку которая будет вызывать и далее генерировать отчет
(на подобии qtrpt)
хотелось бы подробную инструкцию для валенка
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 10, 2017, 06:04:09 PM
Доброго времени !

1. Компилируем LimeReport получаем в папке build\ динамические библиотеки
2. Подключаем LimeReport. Для этого в профиле проекта добавляем нечто вроде этого
Code: [Select]
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/limereport/ -llimereport
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/limereport/ -llimereport
else:unix: LIBS += -L$$PWD/libs/limereport/ -llimereport

INCLUDEPATH += $$PWD/libs/limereport/include
DEPENDPATH += $$PWD/libs/limereport/include
3. Используем LimeReport
Code: [Select]
#include <LimeReport>

class MainWindow : public QMainWindow{
....
private
   LimeReport::ReportEngine m_report;
}

void MainWindow::on_pushButton_clicked()  // грузим отчет и выводим на предварительный просмотр
{
    QString reportFile = QFileDialog::getOpenFileName(this,"Report file");
    if (!reportFile.isEmpty()){
        m_report.loadFromFile(reportFile);
        m_report.previewReport();
    }
}
P.S. Во вложении пример структуры проекта
Title: Re: как подключить проект на qt
Post by: maks_a on January 11, 2017, 05:21:38 PM
ошибка
все по инструкции
#include <LimeReport>

C:\untitled3\mainwindow.h:6: ошибка: C1083: ЌҐ г¤ Ґвбп ®вЄалвм д ©« ўЄ«о祭ЁҐ: LimeReport: No such file or directory
Title: Re: как подключить проект на qt
Post by: Subst on January 11, 2017, 05:30:41 PM
какая версия QT ?
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 11, 2017, 05:31:01 PM
Можете ваш проект со всем содержимым сюда заслать ?
Title: Re: как подключить проект на qt
Post by: maks_a on January 11, 2017, 05:42:57 PM
qt 5.7
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 11, 2017, 05:51:18 PM
dll и папка include для LimeReport где лежит ?
Title: Re: как подключить проект на qt
Post by: maks_a on January 11, 2017, 06:07:07 PM
ну как-то так
C:\untitled3\limereport\build\5.7.0\win32\debug\lib
в архив папку не добавлял



путь не так указан?
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/limereport/ -llimereport
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/limereport/ -llimereport
else:unix: LIBS += -L$$PWD/libs/limereport/ -llimereport

INCLUDEPATH += $$PWD/libs/limereport/include
DEPENDPATH += $$PWD/libs/limereport/include
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 11, 2017, 07:09:20 PM
Да путь неправильно указан :)
Title: Re: как подключить проект на qt
Post by: maks_a on January 12, 2017, 03:14:33 PM
и снова другие ошибки

начинаю собирать бубен
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 12, 2017, 04:40:04 PM
нужно добавить #include <QFileDialog>
и еще я бы посоветовал поставить https://gres.biz/qtc-paneencode/ (https://gres.biz/qtc-paneencode/) плагин для QtCreator, который позволяет нормально читать сообщения об ошибках если они выводятся в таком виде как у вас. 
Title: Re: как подключить проект на qt
Post by: maks_a on January 12, 2017, 06:25:49 PM
вжууух и кривые руки
QMetaObject::connectSlotsByName: No matching signal for on_pushButton_cliked()
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 12, 2017, 06:41:21 PM
Нужно создать кнопку, к ней прицепить слот, в него засунуть содержимое on_pushButton_cliked()
Саму функцию on_pushButton_cliked() удалить :) То что я кидал для примера не нужно прям в лоб использовать :)
Title: Re: как подключить проект на qt
Post by: maks_a on January 12, 2017, 06:52:16 PM
Да вроде все по феншую делал

Как именно в кнопке указать адрес на файл
:/reportfile.lrxml
Или по другому
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 12, 2017, 07:01:20 PM
Смотря где лежит файл. Можно например так:
Code: [Select]
m_report.loadFromFile(QApplication::applicationDirPath()+"/reportfile.lrxml");
Title: Re: как подключить проект на qt
Post by: maks_a on January 13, 2017, 06:17:50 PM
нашел проблему кнопки
подключал я ее провильно поэтому смутила ошибка
спасибо за помощь
Title: Re: как подключить проект на qt
Post by: maks_a on January 18, 2017, 06:52:40 PM
подскажите как составить запрос на сумму чисел в строке
из видео не совсем понятно
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 18, 2017, 09:39:40 PM
Просто сложить значения полей $S{ $D{поле1}+$D{поле2} }
Title: Re: как подключить проект на qt
Post by: maks_a on January 19, 2017, 09:21:09 AM
при нажатии на кнопку выдает ошибку
код кнопки void MainWindow::on_pushButton_clicked()
{
    QString reportFile = QFileDialog::getOpenFileName(this,"BDSMREport.lrxml");
    if (!reportFile.isEmpty()){
        m_report.loadFromFile(QApplication::applicationDirPath()+"/BDSMREport.lrxml");
        m_report.previewReport();
    }
}

расположение макета отчета ‪C:\untitled3\BDSMREport.lrxml

даже при выборе отчета он его не открывает
Title: Re: как подключить проект на qt
Post by: Subst on January 19, 2017, 11:18:37 AM
Не вполне понимаю тебя...

QString QFileDialog::getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options())

вот прототип функции, возвращает полный путь к файлу.

Ты потом добавляешь текущую диреторию приложения.

после
QString reportFile = QFileDialog::getOpenFileName(this,"BDSMREport.lrxml"); т.е. понятно диалог открытия диалога с заголовком "BDSMREport.lrxml"

выкинь в консоль reportFile, посмотри, что напишет
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 19, 2017, 11:20:09 AM
Вместо
Quote
m_report.loadFromFile(QApplication::applicationDirPath()+"/BDSMREport.lrxml");
Code: [Select]
m_report.loadFromFile(reportFile);Иначе получается, что выбранный файл игнорируется, а приложение пытается открыть файл, который должен лежать рядом с исполняемым модулем и как я подозреваю он там отсутствует :)
Title: Re: как подключить проект на qt
Post by: maks_a on January 19, 2017, 12:14:55 PM
bdsmreport.lrxml-макет

да код и так не работает
через
 QString reportFile = QFileDialog::getOpenFileName(this,"BDSMREport.lrxml");
    if (!reportFile.isEmpty()){
        m_report.loadFromFile(reportFile);
        m_report.previewReport();
    }
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 19, 2017, 12:36:51 PM
Из представленного скриншота не понятно как именно код не работает :) У вас открылся диалог выбора файла отчета, вы в нем выбрали файл bdsmreport.lrxml и он не открылся на просмотр?
Title: Re: как подключить проект на qt
Post by: maks_a on January 19, 2017, 12:52:23 PM
как упростить сие действие чтоб не выводил окно на выбор файла отчета
а изначально его открывал
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 19, 2017, 01:03:35 PM
Code: [Select]
m_report.loadFromFile(QApplication::applicationDirPath()+"/BDSMREport.lrxml");
Откроет отчет, который лежит рядом с exe файлом, только нужно учитывать, что экзешник лежит не в папке проекта, а в папке куда происходит сборка у вас она, по всей видимости, называется debug или release в зависимости от типа сборки (уточнить можно в настройках проекта). Соответсвенно BDSMReport.lrxml нужно положить в эту папку.
Title: Re: как подключить проект на qt
Post by: maks_a on January 19, 2017, 04:08:48 PM
да в очередной раз благодарствую
debug
Title: Re: как подключить проект на qt
Post by: maks_a on January 23, 2017, 11:01:40 AM
как в переменную передать выбранное значение из комбобокса

report->dataManager()->setReportVariable("Cath", ___);
report->dataManager()->setReportVariable("T",___);
report->dataManager()->setReportVariable("_Y",___)

пример комбо

void MainWindow::TableView_Active_10(){
    ui->comboBox_3->setWindowTitle("SEMESTER");
    ui->comboBox_3->show();
    SEMESTER->select();
    ui->comboBox_3->setModel(SEMESTER);
}
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 23, 2017, 12:45:20 PM
Code: [Select]
report->dataManager()->setReportVariable("combovalue",ui->comboBox_3->currentText());
Title: Re: как подключить проект на qt
Post by: maks_a on January 23, 2017, 01:21:13 PM
да так и делал только через currentData выдавала ошибку
через currentText работает
Title: Re: как подключить проект на qt
Post by: Arin Alex on January 23, 2017, 02:18:51 PM
если через currentData то вот так:
Code: [Select]
report->dataManager()->setReportVariable("combovalue",ui->comboBox_3->currentData(Qt::DisplayRole));
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 09:52:59 AM
Добрый день. У меня ошибка. cannot find -llimereport

Пути прописаны правильно.
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/limereport/ -llimereport
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/limereport/ -llimereport
else:unix: LIBS += -L$$PWD/lib/limereport/ -llimereport

INCLUDEPATH += $$PWD/lib/limereport/include
DEPENDPATH += $$PWD/lib/limereport/include
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 10:14:04 AM
С ошибкой cannot find -llimereport разобрался.
Теперь при добавлении LimeReport::ReportEngine *report;

При сборке:
Программа неожиданно завершилась.
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 02:22:48 PM
Можно глянуть на ваши исходники ?
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 03:17:25 PM
Я брал ваш проект. http://limereport.ru/forum/index.php?action=dlattach;topic=137.0;attach=175
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 03:19:07 PM
Запускается C:\Users\u.belikov\Desktop\build-LimeReportSimpleDemo-4_6_2-Debug\debug\LimeReportSimpleDemo.exe...
Программа неожиданно завершилась.
C:\Users\u.belikov\Desktop\build-LimeReportSimpleDemo-4_6_2-Debug\debug\LimeReportSimpleDemo.exe аварийно завершился.
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 04:12:47 PM
limereport.dll сами собирали ? или мою взяли ?
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 04:39:17 PM
Взял вашу. Но и свою подкинул из папки LimeReport-master\build\5.5.1\win32\release\lib\.
Ошибка
QPrinter: Must construct a QCoreApplication before a QPrinter
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 06:56:40 PM
Чем собираете ? Какой компилятор ?
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 07:10:45 PM
MinGW 4.9.2 32 bit.
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 07:13:54 PM
А IDE QtCreator ?
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 07:14:36 PM
Qt Creator 4.2.1
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 07:19:47 PM
Если открыть limereport.pro и выбрать подпроект designer на запуск,  запустится?
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 07:25:27 PM
Да все работает. Демо тоже.
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 07:32:12 PM
В LimeReportSimpleDemo поменяйте пути к собранной библиотеке
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 07:40:35 PM
Изменил.
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/LimeReport-master/build/5.5.1/win32/release/lib/ -llimereport
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/LimeReport-master/build/5.5.1/win32/release/lib/ -llimereport
else:unix: LIBS += -L$$PWD/LimeReport-master/build/5.5.1/win32/release/lib/ -llimereport

INCLUDEPATH += $$PWD/LimeReport-master/build/5.5.1/win32/release/lib/include
DEPENDPATH += $$PWD/LimeReport-master/build/5.5.1/win32/release/lib/include

Ошибка

Программа неожиданно завершилась.
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 07:41:59 PM
При повторной сборке и запуске
QPrinter: Must construct a QCoreApplication before a QPrinter
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly
Программа неожиданно завершилась.
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 07:50:25 PM
Сборка отладка или релиз?
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 07:57:07 PM
Отладка. В релизе все работает.
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 07:59:53 PM
В путях два раза релиз указан поменяйте на дебаг
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 08:11:05 PM
Менял в двух и во всех.
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/LimeReport-master/build/5.5.1/win32/debug/lib/ -llimereport
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/LimeReport-master/build/5.5.1/win32/debug/lib/ -llimereport
else:unix: LIBS += -L$$PWD/LimeReport-master/build/5.5.1/win32/debug/lib/ -llimereport

INCLUDEPATH += $$PWD/LimeReport-master/build/5.5.1/win32/debug/lib/include
DEPENDPATH += $$PWD/LimeReport-master/build/5.5.1/win32/debug/lib/include

ошибка

QPrinter: Must construct a QCoreApplication before a QPrinter
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 08:14:59 PM
Поробуйте клирануть проект  и qmake перед  сборкой запустить
Title: Re: как подключить проект на qt
Post by: yurii on March 19, 2017, 08:22:39 PM
Да все ОК. Очистил. Запустил дебаг, все работает, но предупреждение ":-1: предупреждение: Каталог сборки должен быть на том же уровне, что и каталог исходников." В итоги закрыл и открыл QT, все собирается без ошибок. Спасибо.
Title: Re: как подключить проект на qt
Post by: Arin Alex on March 19, 2017, 08:28:34 PM
всегда пожалуйста :)