Wpis z mikrobloga

#programowanie #cpp #qt

To moja funkcja drukująca:

if (template_ptr != Q_NULLPTR) {
----QPrinter printer(QPrinter::HighResolution);
----if (QPrintDialog(&printer, this).exec() == QDialog::Accepted) {
--------if (QPageSetupDialog(&printer, this).exec() == QDialog::Accepted) {
------------QPainter painter(&printer);
------------painter.setRenderHint(QPainter::Antialiasing);
------------painter.setRenderHint(QPainter::TextAntialiasing);
------------qreal x, _y, h, w, fake;
------------ui->graphicsView->sceneRect().getRect(&x, &_y, &w, &fake);
------------h = template_ptr->page_height*2.0;
------------qint32 page = 0;
------------while (true) {
----------------qreal y = _y + h*page;
----------------QRectF leftRect(x, y, w, template_ptr->page_height*2.0*5.0 - h*page);
----------------if (ui->graphicsView->scene()->items(leftRect).length() <= 0) {
--------------------break;
----------------}
----------------QRectF sourceRect(x, y, w, h);
----------------ui->graphicsView->scene()->render(&painter, printer.pageRect(), sourceRect);
----------------printer.newPage();
----------------page++;
------------}
--------}
----}
}

Chodzi w sumie tylko o tę komendę bo reszta działa:
ui->graphicsView->scene()->render(&painter, printer.pageRect(), sourceRect);

Nie wiem jak rozwiązać problem QGraphicsTextItem które znajdują się na linii strony, drukowane są one tak jak na załączonym screenie. Tzn. mógłbym rozpisać funkcję która to sprawdza, przesuwa... ale to by pewnie spowodowało masę problemów, nie ma jakiegoś hinta czy prostego rozwiązania dla tego problemu? Każdy wiersz to taki string: "([nr]) [nazwisko], [imię]\n (siła: [siła])" i nie powinien być ucinany.
Dijuna - #programowanie #cpp #qt

To moja funkcja drukująca:
if (templateptr != QN...

źródło: comment_goL2zPz9933r0R6aS22jShlczLpIbpVs.jpg

Pobierz
  • 3