Qt Widget於 Windows 10/11 的尺寸問題

1080P 銀幕是否 高度有1080點素?

如果你用一台 14吋的筆電, 假設是 1920x1080 解析度, 假設你在 pyside6 設定主視窗 為Fixsize QSize(1920, 1000), 那有大機率, 主視窗將遠遠超過螢幕. 原因在於 Windows 10/11 顯示器設定對於小螢幕預設為 125% 或是 150%,

以1080 被設為 125%舉例來說, 1080*100/125 大約 864, 所以高度就不可以設Fixsize 大於 864 (注意還需扣掉 工作列或是Dock 等的高度, 所以很可能只能低於 830 ); 同樣的寬度不可以設Fixsize 大於 1920*100/125 = 1,536 .

顯示器設定, 很可能被設為 125% 或 150%


備註: 如何解決

  1. 比較不自動的設計就是 如上述手動計算, 給預設值, 或者:

  2. 利用 QApplication.instance().screens() 來取得螢幕可用像素 (例如: Windows必須扣掉工作列高度; Mac OS必須扣掉Dock高度;)

screenRect = QApplication.instance().screens()[0].availableSize()

screenH= screenRect.height()

screenW = screenRect.width()