Details
-
Bug
-
Resolution: Cannot Reproduce
-
P2: Important
-
None
-
5.15.5, 5.15.6, 6.1.3, 6.2.0 Beta3
Description
When application is moved from screen to other there are some noticeable painting artifacts if using Qt::HighDpiScaleFactorRoundingPolicy::PassThrough scaling with multiple screens which have difference in scaling and at least the other uses fractional scaling.
Way to reproduce:
1. On Windows 10 Desktop computer, set the scaling of the primary display to 100% and the scaling of the additional monitor to 125%
Issue was reproducible with following display settings:
Primary monitor: 1920 x 1080 (Scale 100%)
additional monitor: 1920 x 1080 (Scale 125%)
AND
Primary monitor: 3840 x 2160 (Scale 150%)
additional monitor: 1920 x 1080 (Scale 125%)
2. Build and run the attached example project with Qt 5.15.6. The app appears on the primary monitor and looks normal (pic1)
3. Drag the app to additional monitor. The app has leftover painting
artifacts. This is the painting artifact #1 (pic2).
4. [Left Click] once to hide the "base_" widget, then [Left Click]
again to show it. This resolves some of the artifacts from Step 3, but it should still look like a solid blue box. Notice the black stripe across the box. This area is not being repainted. It is the very top row of pixels from the "custom_" widget. This is the painting artifact #2 (pic3)
5. [Right Click] once to show a magenta overlay, then [Right Click] again to
hide it. Please notice the magenta stripe across the box. Similar to Step 4, the same row of pixels is not being repainted. (pic4)
There were also similar painting artifacts with Qt 6.1.3 and with Qt 6.2.0 beta but they behaved a bit differently than with 5.15.6