Russian Qt Forum
Май 03, 2024, 14:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: долго отображается QPrintPreviewDialog  (Прочитано 5009 раз)
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
}

Проблема в том, что при первом просмотре печати окно предварительного просмотра отображается долго, потом при повторном отображении быстро, а потом все обратно.
Подскажите пожалуйста в чем проблема.
Записан
sulia
Гость
« Ответ #1 : Август 01, 2011, 13:00 »

спасибо всем проблема решена)))
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Август 01, 2011, 13:03 »

Опиши решение.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
sulia
Гость
« Ответ #3 : Август 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;
Я так понял проблема заключалась с переменными которые создавались на стеке.
Теперь все отлично работает и окно предварительного просмотра выводится моментально.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.