Russian Qt Forum

Qt => Печать => Тема начата: volkov9999 от Сентябрь 08, 2010, 23:51



Название: TextBrowser не обновляется
Отправлено: volkov9999 от Сентябрь 08, 2010, 23:51
Здравствуйте!
Имеются некоторые переменные, которые отправляются в html и дальше идут на предпросмотр.  После  перерасчета TextBrowser открывается со старыми значениями.
Делал update() ,  reload() не помогает.
В чем дело?

Код:
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
...
 //-------
    cTextEdit =    new QTextEdit();
    cTextBrowser = new QTextBrowser() ;
    prDialog =     new QPrintPreviewDialog() ;
    printer  =     new QPrinter () ;
    text     =     new QString ();
    connect(prDialog, SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreviewNeeds(QPrinter* )));
    //-------
...
}


 void Widget::printPreview()
{
    text = QString::fromLocal8Bit(" здесь html  ") ;
     .....
    string_comboBoxRibGeogrid.setNum( this->double_comboBoxRibGeogrid ) ;
    text->replace(QString("comboBoxRibGeogrid"), string_comboBoxRibGeogrid );
    ......
       cTextBrowser->setHtml(*text);
       cTextBrowser->reload();
       cTextBrowser->update();
       .....
       prDialog->exec();

 }

   void Widget::printPreviewNeeds(QPrinter *_printer)
   {
          cTextBrowser->reload();
          cTextBrowser->update();
          cTextBrowser->print(_printer);
   

   }




Название: Re: TextBrowser не обновляется
Отправлено: Denjs от Сентябрь 09, 2010, 00:18
Как вы это делаете ?
 Widget::printPreview() - смотрите на него, потом закрываете принт диалог, делаете переасчет, после этого снова Widget::printPreview() - и на препросмотре HTML-ки старые значения переменных?

у вас при втором вызове Widget::printPreview() - вызывается ещё раз void Widget::printPreviewNeeds(QPrinter *_printer)?

Может быть надо вызвать QPrintPreviewDialog::update?

PS: У принт-виджета есть хороший(?) метод void QPrintPreviewWidget::updatePreview ()  


Название: Re: TextBrowser не обновляется
Отправлено: volkov9999 от Сентябрь 09, 2010, 01:26
Цитировать
Как вы это делаете ?
 Widget::printPreview() - смотрите на него, потом закрываете принт диалог, делаете переасчет, после этого снова Widget::printPreview() - и на препросмотре HTML-ки старые значения переменных?
Именно так и делаю. Принт диалог блокирует программу, так что сначала нужно закрыть окно просмотра.

Цитировать
у вас при втором вызове Widget::printPreview() - вызывается ещё раз void Widget::printPreviewNeeds(QPrinter *_printer)?
Да. update тоже делал - не помогло.

Попробовал QPrintPreviewWidget::updatePreview   - обновляется. Только нужен "функционал" PreviewDialog =(




Название: Re: TextBrowser не обновляется
Отправлено: Denjs от Сентябрь 09, 2010, 01:46
гм... а можно хамский вопрос: а вы уверены что внутри  void Widget::printPreview() у вас новые значения ваших переменных которые вы преобразуете в текст?


Название: Re: TextBrowser не обновляется
Отправлено: volkov9999 от Сентябрь 09, 2010, 01:53
Угу ;D .  В функции использую переменные  класса.
 изменил   prDialog     из QPrintPreviewDialog ->  QPrintPreviewWidget
 вместо     prDialog->exec();   ->    prDialog->show();
 и стало обновляться. остальной код не трогал