[Development] Updated high-DPI support for Qt 5.14
Morten.Sorvig at qt.io
Fri Sep 27 19:51:00 CEST 2019
> On 27 Sep 2019, at 17:04, Thiago Macieira <thiago.macieira at intel.com> wrote:
> On Friday, 27 September 2019 03:56:44 PDT Morten Sørvig wrote:
>> Configuring Windows is a good example here: you set the slider to one of
>> 100% - 125% - 150% - 175% - 200% depending on monitor pixel density and
>> viewing distance. There’s then a single value to configure.
> Well, that's a good example: setting a factor, not the absolute value.
Yes, agreed. A factor is better UI than an absolute value. We are talking
about DPI at lest partly for historical reasons: the windows percentage setting
has always been reported as logical DPI by QPlatformScreen::logicalDpi(), and
that has not changed.
>>> Moreover, I can have two different monitors connected to the same output
>>> (at different times, of course). Since they have different DPI, the
>>> multiplicative factor allows me to set it once for both, but if I set a
>>> DPI setting, it'll likely be wrong for at least one of them.
>> Yes, we need per-monitor settings (DPI or scale).
> The problem on that one is that you're forcing me to keep a value per each
> individual monitor I connect to regularly. With the laptop's display panel,
> that's 4 or 5. Since they are different actual monitors, each has their own
> DPI value, which is obtained by Qt. And some monitors report wildly incorrect
> DPI values, like a 27" monitor saying it's 160x90mm in size. So what's the
> policy for a brand new monitor we connect to (say, a projector in a conference
> room)? Does it:
> a) keep the physical one from the monitor?
> b) use 96x96?
> c) use one of the other monitor's settings?
> (hint: a, b and c are wrong)
> Right now, I need exactly two values: the display panel's multiplicative
> factor of 2 and the external output's multiplicative factor of 2.
Right, I think I see what you are doing now (maybe). But what about non-Qt apps? Do
you configure them manually as well?
If this logic could be contained within the XCB platform plugin, and the result
reported to QtGui via QPlatformScreen::logicalDpi(), then I would be happy. (And,
setHighDpiScaleFactorRoundingPolicy could work as documented, too).
> Thiago Macieira - thiago.macieira (AT) intel.com
> Software Architect - Intel System Software Products
> Development mailing list
> Development at qt-project.org
More information about the Development