LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: maks_a on January 10, 2017, 02:15:49 pm
-
создал проект на qt widget
не понятно как к нему привентить репортер
к примеру в форму виджета добавить кнопку которая будет вызывать и далее генерировать отчет
(на подобии qtrpt)
хотелось бы подробную инструкцию для валенка
-
Доброго времени !
1. Компилируем LimeReport получаем в папке build\ динамические библиотеки
2. Подключаем LimeReport. Для этого в профиле проекта добавляем нечто вроде этого
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
#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. Во вложении пример структуры проекта
-
ошибка
все по инструкции
#include <LimeReport>
C:\untitled3\mainwindow.h:6: ошибка: C1083: ЌҐ г¤ Ґвбп ®вЄалвм д ©« ўЄ«о票Ґ: LimeReport: No such file or directory
-
какая версия QT ?
-
Можете ваш проект со всем содержимым сюда заслать ?
-
qt 5.7
-
dll и папка include для LimeReport где лежит ?
-
ну как-то так
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
-
Да путь неправильно указан :)
-
и снова другие ошибки
начинаю собирать бубен
-
нужно добавить #include <QFileDialog>
и еще я бы посоветовал поставить https://gres.biz/qtc-paneencode/ (https://gres.biz/qtc-paneencode/) плагин для QtCreator, который позволяет нормально читать сообщения об ошибках если они выводятся в таком виде как у вас.
-
вжууух и кривые руки
QMetaObject::connectSlotsByName: No matching signal for on_pushButton_cliked()
-
Нужно создать кнопку, к ней прицепить слот, в него засунуть содержимое on_pushButton_cliked()
Саму функцию on_pushButton_cliked() удалить :) То что я кидал для примера не нужно прям в лоб использовать :)
-
Да вроде все по феншую делал
Как именно в кнопке указать адрес на файл
:/reportfile.lrxml
Или по другому
-
Смотря где лежит файл. Можно например так:
m_report.loadFromFile(QApplication::applicationDirPath()+"/reportfile.lrxml");
-
нашел проблему кнопки
подключал я ее провильно поэтому смутила ошибка
спасибо за помощь
-
подскажите как составить запрос на сумму чисел в строке
из видео не совсем понятно
-
Просто сложить значения полей $S{ $D{поле1}+$D{поле2} }
-
при нажатии на кнопку выдает ошибку
код кнопки 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
даже при выборе отчета он его не открывает
-
Не вполне понимаю тебя...
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, посмотри, что напишет
-
Вместо
m_report.loadFromFile(QApplication::applicationDirPath()+"/BDSMREport.lrxml");
m_report.loadFromFile(reportFile);
Иначе получается, что выбранный файл игнорируется, а приложение пытается открыть файл, который должен лежать рядом с исполняемым модулем и как я подозреваю он там отсутствует :)
-
bdsmreport.lrxml-макет
да код и так не работает
через
QString reportFile = QFileDialog::getOpenFileName(this,"BDSMREport.lrxml");
if (!reportFile.isEmpty()){
m_report.loadFromFile(reportFile);
m_report.previewReport();
}
-
Из представленного скриншота не понятно как именно код не работает :) У вас открылся диалог выбора файла отчета, вы в нем выбрали файл bdsmreport.lrxml и он не открылся на просмотр?
-
как упростить сие действие чтоб не выводил окно на выбор файла отчета
а изначально его открывал
-
m_report.loadFromFile(QApplication::applicationDirPath()+"/BDSMREport.lrxml");
Откроет отчет, который лежит рядом с exe файлом, только нужно учитывать, что экзешник лежит не в папке проекта, а в папке куда происходит сборка у вас она, по всей видимости, называется debug или release в зависимости от типа сборки (уточнить можно в настройках проекта). Соответсвенно BDSMReport.lrxml нужно положить в эту папку.
-
да в очередной раз благодарствую
debug
-
как в переменную передать выбранное значение из комбобокса
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);
}
-
report->dataManager()->setReportVariable("combovalue",ui->comboBox_3->currentText());
-
да так и делал только через currentData выдавала ошибку
через currentText работает
-
если через currentData то вот так:
report->dataManager()->setReportVariable("combovalue",ui->comboBox_3->currentData(Qt::DisplayRole));
-
Добрый день. У меня ошибка. 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
-
С ошибкой cannot find -llimereport разобрался.
Теперь при добавлении LimeReport::ReportEngine *report;
При сборке:
Программа неожиданно завершилась.
-
Можно глянуть на ваши исходники ?
-
Я брал ваш проект. http://limereport.ru/forum/index.php?action=dlattach;topic=137.0;attach=175
-
Запускается 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 аварийно завершился.
-
limereport.dll сами собирали ? или мою взяли ?
-
Взял вашу. Но и свою подкинул из папки 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
-
Чем собираете ? Какой компилятор ?
-
MinGW 4.9.2 32 bit.
-
А IDE QtCreator ?
-
Qt Creator 4.2.1
-
Если открыть limereport.pro и выбрать подпроект designer на запуск, запустится?
-
Да все работает. Демо тоже.
-
В LimeReportSimpleDemo поменяйте пути к собранной библиотеке
-
Изменил.
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
Ошибка
Программа неожиданно завершилась.
-
При повторной сборке и запуске
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
Программа неожиданно завершилась.
-
Сборка отладка или релиз?
-
Отладка. В релизе все работает.
-
В путях два раза релиз указан поменяйте на дебаг
-
Менял в двух и во всех.
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
-
Поробуйте клирануть проект и qmake перед сборкой запустить
-
Да все ОК. Очистил. Запустил дебаг, все работает, но предупреждение ":-1: предупреждение: Каталог сборки должен быть на том же уровне, что и каталог исходников." В итоги закрыл и открыл QT, все собирается без ошибок. Спасибо.
-
всегда пожалуйста :)