When painting to a QPrinter object with a QPainter object, the colour of cosmetic lines is not shown. Instead, they are all printed in black, even with the printer colour mode set to colour (printer.setColorMode(QPrinter::Color)). However, when painting to a QGraphicsView object the colours appear correctly.
Oddly, it seems that in order for the colour to be shown when painting to the printer object, the line width must be set >= 1. Setting the pen width to 1 is not desirable, as I apply a matrix transform to the painter and always want the line width to only be 1 pixel wide, independent of the transformation set on the painter.
I would welcome any workaround for this issue.