Название: долго отображается QPrintPreviewDialog
Отправлено: sulia от Август 01, 2011, 11:48
Добрый день! Есть код: void DialogMain::OnPrintTable() { #ifndef QT_NO_PRINTER QPrinter printer; printer.setFullPage(false); printer.setOrientation(QPrinter::Landscape); QPrintPreviewDialog preview(&printer,this,Qt::WindowMinMaxButtonsHint); preview.setWindowTitle("Перегляд друку "+ this->windowTitle()); connect(&preview, SIGNAL(paintRequested(QPrinter*)),this, SLOT(printPreview(QPrinter*))); preview.exec(); #endif } void DialogMain::printPreview(QPrinter *printer) { QString str_html=""; int size = 0; tablegrChildPoint->CreateHtmlPreview(this->windowTitle(),str_html, size); #ifndef QT_NO_PRINTER QTextDocument *doc = new QTextDocument(); doc->setHtml(str_html); if(size>=900) doc->setPageSize(QSizeF(size+10,size+10)); doc->print(printer); #endif }
Проблема в том, что при первом просмотре печати окно предварительного просмотра отображается долго, потом при повторном отображении быстро, а потом все обратно. Подскажите пожалуйста в чем проблема.
Название: Re: долго отображается QPrintPreviewDialog
Отправлено: sulia от Август 01, 2011, 13:00
спасибо всем проблема решена)))
Название: Re: долго отображается QPrintPreviewDialog
Отправлено: Пантер от Август 01, 2011, 13:03
Опиши решение.
Название: Re: долго отображается QPrintPreviewDialog
Отправлено: sulia от Август 01, 2011, 13:37
все просто. В заголовочном файле объявил две динамические переменные QPrintPreviewDialog *preview; QPrinter *printer;
И изменилась функция printer = new QPrinter(); preview = new QPrintPreviewDialog(printer,this,Qt::WindowMinMaxButtonsHint); printer->setFullPage(false); printer->setOrientation(QPrinter::Landscape); preview->setWindowTitle("Перегляд друку "+ this->windowTitle()); connect(preview, SIGNAL(paintRequested(QPrinter*)),this, SLOT(printPreview(QPrinter*))); preview->exec(); delete printer; delete preview;
Я так понял проблема заключалась с переменными которые создавались на стеке. Теперь все отлично работает и окно предварительного просмотра выводится моментально.
|