LINUX.ORG.RU

Как вывести на печать 2 QGraphicsScene?

 , , ,


0

1

Здравствуйте!

У меня есть две QGraphicsView ( у каждой своя сцена ).

Выглядит это примерно так: https://postimg.cc/TyFbvvYZ

По сути мне нужно напечатать QGraphicsScene слева, совмещенную с QGraphicsScene справа

Как мне совместить эти две сцены на печать(при условии что они имеют одинаковую высоту всегда и синхронизированы между собой по вертикальному скроллингу)?

Отрендерить обе сцены с нужным разрешением в файлы картинок.

Потом создать QTextDocument с примерно таким содержанием:

<table>
 <tr>
  <td><img src="Файлик в tmp-директории с первой сценой"/></td>
  <td><img src="Файлик в tmp-директории со второй сценой"/></td>
 </tr>
</table>
И отправить его на печать.

Xintrea ★★★★★
()
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

А нормальным будет решение сделать два файла картинок(QImage) и создать третий QImage sumImages, который будет вмещать в себя эти две нарисованные QImage и потом отправить на печать?

Nikci12
() автор топика
Ответ на: комментарий от Nikci12

Ты же программист, может и так сработает.
Я картинки на печать никогда не выводил.
Я выводил на печать QTextDocument, подтверждаю, так печать работает.

Если у тебя будет одна итоговая картика, то можешь попробовать ее распечатать так:

QImage img(fileName);
QPrinter printer;
QPainter painter(&printer);
painter.drawImage(QPoint(0,0),img);
painter.end();

А если нужно с диалогом настройки принтера, то что-то такое:
QString fileName = ...;
QPrinter printer;

QPrintDialog *dlg = new QPrintDialog(&printer,0);
if(dlg->exec() == QDialog::Accepted) {
    QImage img(fileName);
    QPainter painter(&printer);
    painter.drawImage(QPoint(0,0),img);
    painter.end();
}

delete dlg;

Здесь с fileName можешь не заморачиваться, а напрямую работать с QImage img.

Xintrea ★★★★★
()
Последнее исправление: Xintrea (всего исправлений: 2)