No matter what I try, the axis labels are drawn very large and are cutoff in the output to a printer. I am using the recommended code for rendering. Please note that only Windows HiDPI (e.g. 200% display scaling) suffers from this issue, the identical code on Linux (KDE Plasma) and macOS (Retina displays) Qt distributions works perfectly.
I noticed in the code:
void QCustomPlot::setBufferDevicePixelRatio(double ratio) { if (!qFuzzyCompare(ratio, mBufferDevicePixelRatio)) { #ifdef QCP_DEVICEPIXELRATIO_SUPPORTED mBufferDevicePixelRatio = ratio; foreach(QSharedPointer<QCPAbstractPaintBuffer> buffer, mPaintBuffers) { buffer->setDevicePixelRatio(mBufferDevicePixelRatio); // Note: axis label cache has devicePixelRatio as part of cache hash, so no need to manually clear cache here } #else qDebug() << Q_FUNC_INFO << "Device pixel ratios not supported for Qt versions before 5.4"; mBufferDevicePixelRatio = 1.0; #endif } }
I think the axis label cache may NOT have the correct pixel ratio? How do I "manually clear" the labels cache? I thought this might be a hint since it is only the labels that seem unable to draw correctly.
This is a longstanding bug with Windows HiDPI and output to a printer with QCustomPlot.