[Development] Proposal: Make QPen non-cosmetic by default

Uwe Rathmann Uwe.Rathmann at tigertal.de
Thu Oct 11 22:59:46 CEST 2012


On Thu, 11 Oct 2012 14:33:30 +0000, Verbruggen Erik wrote:

>> I have personally never seen an actual use case where a cosmetic pen
>> makes sense, but  I assume there are reasons for having i so anyone
>> creating an explicit QPen(Qt::black, 0.0) should get a 1.0 pixel thick
>> line regardless of scaling.

Think about a scatter plot with many points displayed as crosses. On a 
large zoom level you only see a cloud but when zooming in you can see 
each cross and its position in detail.

When the pen for the crosses would have been scaled you would end with 
huge fat symbols - each probably larger than the plot widget itself.

Or think about a grid ( or ticks on an axis ), where each line indicates 
a position according to scale. This line has to be one pixel regardless 
of the scaling.

> PDF/PS define it this way, and is used when writing that kind of output.

The important part with PDF and cosmetic pens is when you zoom in the 
generated document later in a PDF viewer. The cosmetic attribute used in 
the Qt application code decided if the line gets scaled in the viewer or 
not.

Please note that when you change the default setting to non-cosmetic 
almost all applications using Qwt for generating PDF documents will be 
broken ( zooming itself is not a problem for Qwt as it is not implemented 
using painter transformations, but I know other packages doing it ). And 
as f.e curve pens are set in the application code I can't fix it with a 
new version of the Qwt library.

I bet you will cause similar issues with any type of application that 
implements zooming ( in the application itself or via PDF ).

Uwe





More information about the Development mailing list