LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: DrGluck on February 15, 2016, 01:46:34 pm
-
Создаём ReportEngine, передаём в него модель, вызываем previewReport. Если попытаться удалить ReportEngine, то приложение крашится. Проявляется в 1.2.1 и 1.3.9 (1.3.1 не пробовал), Qt 4.8.6.
На designReport не проявляется.
Возможно предполагается, что ReportEngine должен использоваться исключительно как синглтон. Но тогда нужен какой-либо признак, что сейчас есть открытый отчёт и функция "закрыть отчёт".
-
Предполагалось, что до завершения previewReport, ReportEngine убивать не будут :)
previewReport() должна забирать управление на себя и возвращать после закрытия диалога.
Странно если это не так. У Вас ось какая ?
-
7x64, Qt 4.8.6.
Ситуация с удалением во время показа отчёта получилась случайно. Сгенерировалось событие, закрывающее приложение, и Report Engine удалился и упал в процессе удаления.
Но это, опять-таки, ненормальная ситуация для класса, падать во время delete.
-
Согласен :) Посмотрим, что там за, что цепляется.
-
Повторить ситуацию легко на отдельном маленьком приложении. По нажатию на кнопку создаём ReportEngine, модель и вызываем превью. По таймеру через пару секунд вызываем функцию, которая убивает ReportEngine.
-
Ок :) Ломать то, мы завсегда с удовольствием :)
-
Я, конечно, ещё попроверяю, но похоже баг не починился.
-
Странно. Я не наблюдаю падения.
Проверяю следующим образом.
void MainWindow::runPreview(){
QTimer* timer = new QTimer(this);
connect(timer,SIGNAL(timeout()), this, SLOT(slotOnTimer()));
timer->start(5000);
report()->loadFromFile(fileName);
report()->previewReport();
}
void MainWindow::slotOnTimer()
{
dynamic_cast<QTimer*>(sender())->stop();
delete m_report;
m_report = 0;
}
Окно предпросмотра закрывается, исключения не летят.
-
Попробую завтра еще раз проверить, тогда отпишусь как что.
-
Проверил, действительно баг починился. Это я вчера из дома работал, не разобрался в чем проблема.