Я решил поиграть с использованием painter и drawContents (). Я был рад, что смог сделать это так, как мне нужно, с минимальными усилиями. Я еще не до конца понимаю детали того, как это работает, но я рассмотрю это более подробно позже. Может быть, мне нужно будет улучшить это, но это выглядит очень хорошо для того, что мне нужно. Проще говоря, похоже, мне просто нужно было изменить весы, чтобы они делали то, что мне нужно. Никогда прежде не использовавший QT для печати, я действительно не знал, как лучше всего это сделать. Но я доволен результатом.
Я заменил код под
QTextDocument *document = new QTextDocument();
с
`
document->setHtml(strStream);
QPrinter printer(QPrinter::HighResolution);
printer.setPaperSize(QPrinter::A4);
printer.setOrientation(QPrinter::Landscape);
printer.setPageMargins(0.1,0.1,0.1,0.1,QPrinter::Millimeter);
printer.setFullPage(true);
QPrintDialog *dialog = new QPrintDialog(&printer, NULL);
if (dialog->exec() != QDialog::Accepted)
return;
QPainter painter;
painter.begin(&printer);
double xscale = printer.pageRect().width() / document->size().width();
double yscale = printer.pageRect().height() / document->size().height();
painter.translate(printer.paperRect().x() + printer.pageRect().width() / 2,
printer.paperRect().y() + printer.pageRect().height() / 2);
painter.scale(xscale, yscale);
painter.translate(-document->size().width() / 2,
-document->size().height() / 2);
document->drawContents(&painter);
painter.end();
delete document;
}`
Возможно, это не лучший ответ, но пока он работает.