When you work around it in your code and don't tell me what went wrong I can't fix it in the lib.
The printer sent with QPrintPreviewDialog::paintRequested(), returns QPaintEngine::Picture for paintEngine()->type().

This was the workaround I used:
Qt Code:
  1. void PlotTextLabel::draw( QPainter *painter,
  2. const QwtScaleMap &xMap, const QwtScaleMap &yMap,
  3. const QRectF &canvasRect ) const
  4. {
  5. if (painter->paintEngine()->type() == QPaintEngine::Picture) {
  6. const int m = margin();
  7.  
  8. const QRectF rect = textRect( canvasRect.adjusted( m, m, -m, -m ),
  9. text().textSize( painter->font() ) );
  10.  
  11. text().draw(painter, rect);
  12. } else {
  13. QwtPlotTextLabel::draw(painter, xMap, yMap, canvasRect);
  14. }
  15. }
To copy to clipboard, switch view to plain text mode 

This would have worked, but may have some side-effects.
Qt Code:
  1. bool QwtPainter::isAligning( QPainter *painter )
  2. {
  3. if ( painter && painter->isActive() )
  4. {
  5. switch ( painter->paintEngine()->type() )
  6. {
  7. case QPaintEngine::Pdf:
  8. case QPaintEngine::SVG:
  9. case QPaintEngine::Picture: // <- Here
  10. return false;
  11.  
  12. default:;
  13. }
  14.  
  15. const QTransform tr = painter->transform();
  16. if ( tr.isRotating() || tr.isScaling() )
  17. {
  18. return false;
  19. }
  20. }
  21.  
  22. return true;
  23. }
To copy to clipboard, switch view to plain text mode