Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-05-30 20:51:41

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

[+] QT4 QtextDocument QPainter i zawijanie tekstu w tabelkach

Cała sprawa zaczeła się od tego że chciałam usunąć numeracje stron z moich dokumentów :/ ale ze względu że nie zaimplementowano tego w normalny sposób musiałam sobie poradzić inaczej więc napisałam takiego potwora.
zmienna html zawiera powiedzmy jakąś tabelkę i jeśli drukowałam za pomocą metody print (obiekt QTextDocument) wszystko było ok. Ale jak zabrałam się za QPainter i drukowanie to jakoś nie działa to poprawnie jeśli chodzi o zawijanie tekstu w tabeli

Kod:

    QTextDocument doc;
    doc.setHtml(css()+html);
    qDebug() << printer->pageRect().width();
    QRect innerRect = printer->pageRect();
    innerRect.setTop(innerRect.top() + 20);
    innerRect.setBottom(innerRect.bottom() - 30);
    QRect contentRect = QRect(QPoint(0,0), doc.size().toSize());
    QRect currentRect = QRect(QPoint(0,0), innerRect.size());
    QPainter painter(printer);
    int count = 0;
    painter.save();
    painter.translate(0, 30);
    while (currentRect.intersects(contentRect))
    {
       doc.drawContents(&painter, currentRect);
       count++;
       currentRect.translate(0, currentRect.height());
       painter.restore();
       painter.drawText(10, 10, QString(""));
       painter.drawText(10, printer->pageRect().bottom() - 10, QString(""));
       painter.save();
       painter.translate(0, -currentRect.height() * count + 30);
       if (currentRect.intersects(contentRect))
            printer->newPage();
    }
    painter.restore();
    painter.end();

Offline

 

#2  2011-05-30 21:43:23

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: [+] QT4 QtextDocument QPainter i zawijanie tekstu w tabelkach

A czemu nie wrócisz do QTextDocument skoro działało?

Offline

 

#3  2011-05-30 22:20:47

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

Re: [+] QT4 QtextDocument QPainter i zawijanie tekstu w tabelkach

kamikaze bo wtedy na każdej stronie jest numer (w prawym dolnym rogu)

Offline

 

#4  2011-05-30 23:07:12

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: [+] QT4 QtextDocument QPainter i zawijanie tekstu w tabelkach

Ahm, to jakiś bug - http://bugreports.qt.nokia.com/browse/QTBUG-1688 . Może już szukałaś i to widziałaś:

http://www.qtcentre.org/threads/37861-Help-Remove-p … 5512642202362
http://stackoverflow.com/questions/2590668/customiz … qtextdocument

Coś takiego nie pomaga? W sumie tak tylko się zainteresowałem bo nie znam QT, ale nie zaszkodzi poznać.

Offline

 

#5  2011-05-30 23:43:09

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

Re: [+] QT4 QtextDocument QPainter i zawijanie tekstu w tabelkach

Dzięki wielkie za pomoc faktycznie zasugerowana przez Ciebie metoda jest aż do bólu prosta :] (czasami lepiej jak ktoś inny zerknie na dane zagadnienie)

Kod:

    QSizeF pSize;
    pSize.setWidth(printer->width());
    pSize.setHeight(printer->height());
    QTextDocument doc;
    doc.setPageSize(pSize);
    doc.setHtml(css()+html);
    doc.print(printer);

PS tego buga znalazłam chwile po tym jak napisałam posta tego 2 :]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)