Russian Qt Forum

Qt => Печать => Тема начата: Я.К. от Июль 05, 2009, 12:03



Название: Печать с двух виджетов на одной странице.
Отправлено: Я.К. от Июль 05, 2009, 12:03
У меня есть два виджета и один QPrintPreviewDialog. Я присоединяю сингалы с QPrintPreviewDialog'а к соответствующим слотам Print(QPrinter*) обоих виджетов и пытаюсь что-то распечатать. Однако происходит слудующее: мне говорят, что только один QPainter может работать за один раз. Странно, вроде бы я их завершал.
Кто знает, в чем дело - выручайте!

подсоединяются сигналы
Код:
	QPrintPreviewDialog pPD(&printer);
cout << connect(&pPD, SIGNAL(paintRequested(QPrinter *) ), (PicWidget*)picWidget, SLOT(Print(QPrinter*)) ) << endl;
cout << connect(&pPD, SIGNAL(paintRequested ( QPrinter*)), (BrWidget*)brWidget, SLOT(Print(QPrinter*)) ) << endl;
pPD.exec();

А вот функции соответствующих слотов:
Код:
void PicWidget::Print( QPrinter* printer )
{
cout << "PCW:P"<<endl;
QPainter* painter = printer->paintEngine()->painter();
if(!painter)
painter = new QPainter(printer);

painter->begin(printer);
painter->drawText(100,100, "PICW");
painter->end();
}

Код:
void PicWidget::Print( QPrinter* printer )
{
cout << "PCW:P"<<endl;
QPainter* painter = printer->paintEngine()->painter();
if(!painter)
painter = new QPainter(printer);

painter->begin(printer);
painter->drawText(100,100, "PICW");
painter->end();
}