Скалирование размеров в QPainter & QPrinter
есть необходимость отрендерить таблицу с виджета в pdf, делаю это при помощи связки QPrinter&QPainter, при отрисовке есть проблема со скалированием размеров, в pdf они получаются ~ процентов на 10% больше. Каким образом можно решить данную проблему? Есть подозрения на то, что неправильно рассчитываю коэффиценты для QPainter, заранее благодарю за ответ.
P.S. Нет возможности использовать QWidget::Render()
P.P.S С QPdfWriter та же самая ситуация
Код для перетаскивания таблицы из QTableWidget в pdf:
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFileName("");
printer.setPageSize(QPrinter::A4);
printer.setFullPage(true);
QPainter painter(&printer);
const auto logicalDeviceDpiX = printer.logicalDpiX();
const auto logicalDeviceDpiY = printer.logicalDpiY();
auto screen = QApplication::screens().at(0);
const auto logicalScreenDpiX = screen->logicalDotsPerInchX();
const auto logicalScreenDpiY = screen->logicalDotsPerInchY();
const auto scaleWidth = logicalDeviceDpiX / logicalScreenDpiX;
const auto scaleHeight = logicalDeviceDpiY / logicalScreenDpiY;
painter.scale(scaleWidth, scaleHeight);
qDebug() << "Logical: ";
qDebug() << "Printer dpix: " << printer.logicalDpiX();
qDebug() << "Printer dpiy: " << printer.logicalDpiY();
qDebug() << "Physical";
qDebug() << "Printer dpix: " << printer.physicalDpiX();
qDebug() << "Printer dpiy: " << printer.physicalDpiY();
qDebug() << "Logical: ";
qDebug() << "Table widget dpix: " << tableWidget->logicalDpiX();
qDebug() << "Table widget dpiy: " << tableWidget->logicalDpiY();
qDebug() << "Physical";
qDebug() << "Table widget dpix: " << tableWidget->physicalDpiX();
qDebug() << "Table widget dpiy: " << tableWidget->physicalDpiY();
auto rowOffset = 0.0f;
auto columnOffset = 0.0f;
QPen pen(Qt::black);
pen.setWidth(0);
painter.setPen(pen);
for (auto rowIndex = 0; rowIndex < rowCount; ++rowIndex) {
auto rowHeight = tableWidget->rowHeight(rowIndex);
columnOffset = 0.0f;
for (auto columnIndex = 0; columnIndex < columnCount; ++columnIndex) {
auto columnWidth = tableWidget->columnWidth(columnIndex);
QRectF cellRect(columnOffset, rowOffset, columnWidth, rowHeight);
painter.drawRect(cellRect);
QFont font("Times", 12);
QFontMetrics metrics(font);
font.setPixelSize(metrics.height());
painter.setFont(font);
painter.drawText(cellRect, tableWidget->item(rowIndex, columnIndex)->text(), Qt::AlignHCenter | Qt::AlignVCenter);
columnOffset += columnWidth;
}
rowOffset += rowHeight;
}

