Задача в том, что нужно распечатать график (QwtPlot из библиотеки Qwt) и на следующей странице - содержимое QTextBrowser (производный объект от QTextEdit). И чтобы при этом работал предпросмотр через QPrintPreviewDialog.
Проблема в том, что для печати графика клас QwtPlotRenderer требует объект QPainter. (Там есть методы, где подойдёт и QPrinter, но мне нужен именно этот - для указания области вывода) А для печати QTextBrowser/QTextEdit требуется QPrinter (см. последний абзац).
Поэтому если использовать такой код
QPainter printPainter;
printPainter.begin(printer);
plotRenderer.render(qwtPlot, painter, plotRect);
printer->newPage();
textbrowser->print(printer);
printPainter.end();
то в stderr появляется сообщение
Цитата
QPainter::begin: A paint device can only be painted by one painter at a time.
а на печать попадает только график и пустая страница.
А если поменять две последние строки местами:
QPainter printPainter;
printPainter.begin(printer);
plotRenderer.render(qwtPlot, painter, plotRect);
printer->newPage();
printPainter.end();
textbrowser->print(printer);
тогда вызов printer->newPage() возвращает false, в stderr появляется
Цитата
QPrinter::metric: Invalid metric command
на предпросмотре появляется только текст из QTextBrowser, а мой виртуальный принтер doPdf вызывается два раза и создаёт два файла pdf: с графиком и с текстом.
Как разрешить проблему?