[Development] High-dpi Qt best practices
Sorvig Morten
Morten.Sorvig at digia.com
Tue Oct 9 12:50:26 CEST 2012
On Oct 9, 2012, at 12:21 PM, Olivier Goffart <olivier at woboq.com>
wrote:
> On Tuesday 09 October 2012 09:46:37 Sorvig Morten wrote:
>> On Oct 9, 2012, at 11:32 AM, Olivier Goffart <olivier at woboq.com>
>>
>> wrote:
>>> But QSize is already the size in pixel.
>>> Or do you mean that QIcon::pixmap could return a pixmap that is larger
>>> than
>>> the given QSize, scaled with some magic heuristics. That is not really
>>> intuitive. (and violate the current documentation)
>>
>> I'm re-defining it to be the size in points. I think this intuitive, you are
>> asking QIcon::pixmap() for pixmap suitable for covering this many units on
>> screen - not for a pixmap of a specific size.
>
> What is an "unit on screen"? Is it not a pixel?
In this context it is a point - the unit that does not change when you enable high-dpi mode.
Apple has quite comprehensive documentation about this topic: http://tinyurl.com/8me4yzz is recommended background material for those who are interested.
> When you have do QImage(QSize), the image has hight*width pixel, right?
> Same for QPixmap? or has a pixmap actually more pixal than its size? (as
> returned by QPixmap::size/width/height)
Pixmaps and images _always_ have exactly QPixmap::size() pixels.
> Maybe we can introduce QSizePt
> Code would look like
> QPixmap p = QIcon::pixmap(QSizePt(20,20).toSize(window));
> (but then again, i'd say it is bad practice to even hardcode pt size)
I don't know.. to me QSize is just a pair of ints, it does not have a unit.
>
> I think there should not be that may use of QIcon::pixmap anyway. It is
> mainly going to be used handled QToolBar and similar.
Then it has to work for QToolBar. But I think it's used a fair bit in Qt:
widgets msorvig$ git grep QIcon | wc
668 3666 59429
Morten
More information about the Development
mailing list