I had fixed this prior to 5.13 but the patch was never accepted:
The problem is that Qt is adding device-independent pixels to device-dependent ones when calculating the positions of anything outside the first screen and coming up with nonsense. This can be seen from these lines in qtdiag:
The number 5120 is 1920+3200, but 1920 is a scaled number and 3200 isn't. That means 5120 is a nonsensical result. The end result is that positioning of many things are off.
See the attachment for an example. Note the menu is flush to the right of the second screen, so it's not exactly where it should have been. The File menu (hidden below the ruler) thinks it's roughly at position +3200, so it tries to display the menu at that position. But the actual screen size is only 1920+1600 = 3520 scaled pixels wide.
Another application affected is kmail. Interestingly, it appears only the main window is affected. See the screenshots 1 and 2 to see the menu. The main window is stable so long as I don't resize it. If I do, drawing errors accumulate (screenshot-kmail3.png). This all widgets on the main window's viewport (the message list and folder list do not update, but the scrollbars do).
This does not happen in most other applications, notably Qt Creator and the main window examples. I'll keep trying to find an example that shows these issues.
|For Gerrit Dashboard: QTBUG-81695|
|291685,2||WIP: high-dpi: fix child window handling||5.14||qt/qtbase||Status: ABANDONED||-2||0|
|295859,1||WIP: high-dpi: improve screen determination||5.15||qt/qtbase||Status: ABANDONED||-2||0|
|300513,8||QHighDpi: revert window-on-multiple-screens handling||dev||qt/qtbase||Status: MERGED||+2||0|
|301369,13||high-dpi: Re-implement mapToGlobal and mapFromGlobal||dev||qt/qtbase||Status: MERGED||+2||0|