I don't know why that variable exists. It's useless as far as I can tell. Maybe
it means that you are being scaled?
I use Screen.pixelDensity. Which varies as you think it should, but is spec'd
in px per mm, not DPI.
That pixelRatio is either 1 or 0, I don't think it is ever in between. In
theory on a 2x device the pixelDenisty will be 2x the 1x.
Meanwhile pixel ratio is:
old (10yr) monitor: 4.x
Samsung Note 2: 10.x
Moto X: 16.x
Sent: Thursday, February 05, 2015 at 5:29 PM
From: John Weeks j...@wavemetrics.com
To: interest@qt-project.org interest@qt-project.org
Subject: [Interest] hi-res drawing on Windows
Is there a comprehensive overview of drawing for monitors at various
resolutions on Windows?
I am trying to get our application to work correctly on a hi-res monitor on
Windows. In particular, I have a QToolButton-derived class that makes a
button that is just the icon, with no visible frame. It overrides sizeHint(),
maximumSize() and paintEvent() to do this. Instances of the button are given
icons from PNG resources that have both standard and @2x versions.
One point of this class is to size the button based on the size of the icon.
Thus, sizeHint() and maximumSize() both return iconSize(). In the
paintEvent(), I get the icon out of the button using icon(), get the QWindow
for the window hosting the button and then use QIcon::pixmap(QWindow *,
iconSize(), ...) to get the appropriate QPixmap to draw.
On Macintosh this works great. On my 5k iMac I get the correct size and
hi-res pixmap. Slide the window over to my external standard-res monitor and
it redraws with the standard res pixmap.
On Windows, I don't have a hi-res monitor. I'm faking it by setting Change
the size of all items to Larger 150%. That's another way to say, Make my
large monitor small :) Not ideal, and it's not 2x, so I don't really expect
the 2x icons. What I DO expect is the QWindow::devicePixelRatio() might
return 1.5, but all I get is 1.0 at all settings of size of all items.
I found this:
http://doc-snapshot.qt-project.org/qt5-5.4/highdpi.html
Since I'm on Windows 8.1 I should be in Per-Monitor DPI Aware mode. It
seems like I shouldn't have to intervene in order to get
resolution-independent pixel drawing.
If I do this before creating my QApplication instance:
qputenv(QT_DEVICE_PIXEL_RATIO, 2)
then I get 2.0 from devicePixelRatio(), as expected. I also get my hi-res
icons.
If I do this instead:
qputenv(QT_DEVICE_PIXEL_RATIO, 1.5)
then devicePixelRatio returns 1.0, not 1.5.
And it doesn't seem like I should have to set this myself, anyway.
Thanks for any insight you might be able to offer!
-John Weeks
___
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
___
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest