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

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

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

   }


Записан
Denjs
Гость
« Ответ #1 : Сентябрь 09, 2010, 00:18 »

Как вы это делаете ?
 Widget::printPreview() - смотрите на него, потом закрываете принт диалог, делаете переасчет, после этого снова Widget::printPreview() - и на препросмотре HTML-ки старые значения переменных?

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

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

PS: У принт-виджета есть хороший(?) метод void QPrintPreviewWidget::updatePreview ()  
Записан
volkov9999
Гость
« Ответ #2 : Сентябрь 09, 2010, 01:26 »

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

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

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


« Последнее редактирование: Сентябрь 09, 2010, 01:28 от volkov9999 » Записан
Denjs
Гость
« Ответ #3 : Сентябрь 09, 2010, 01:46 »

гм... а можно хамский вопрос: а вы уверены что внутри  void Widget::printPreview() у вас новые значения ваших переменных которые вы преобразуете в текст?
Записан
volkov9999
Гость
« Ответ #4 : Сентябрь 09, 2010, 01:53 »

Угу Смеющийся .  В функции использую переменные  класса.
 изменил   prDialog     из QPrintPreviewDialog ->  QPrintPreviewWidget
 вместо     prDialog->exec();   ->    prDialog->show();
 и стало обновляться. остальной код не трогал
« Последнее редактирование: Сентябрь 09, 2010, 01:56 от volkov9999 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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