關於Qt高分屏縮放幾個知識點

  • 在windows上經常遇到高分屏縮放的問題,很頭疼,貌似這東西就是windows首發的。
  • 在Qt4時代的程序遇到高分屏縮放,不作任何處理,畢竟Qt4時代(2010年以前)出來的時候幾乎還沒高分屏縮放這東西。
  • 從Qt5.6開始提供了高分屏縮放支持,需要在main函數前面設置 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
  • 從Qt5.14開始提供了高分屏縮放策略設置,需要在main函數前面設置 QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
  • 從Qt6.0開始默認就開啓高分屏屬性Qt::AA_EnableHighDpiScaling,而且不允許關閉(所以你會發現程序用Qt6編譯後界面變得很大)。可以通過setHighDpiScaleFactorRoundingPolicy函數設置策略。
  • 如果不想要高分屏,希望程序永遠保持默認的尺寸,你需要在main函數前面設置 QApplication::setAttribute(Qt::AA_Use96Dpi); 表示永遠不縮放。
  • 如果希望啓用Qt的高分屏則需要設置Qt::AA_EnableHighDpiScaling和setHighDpiScaleFactorRoundingPolicy。缺點是圖片容易發虛,比如複選框的邊框,哪怕是Qt內置樣式風格或者系統默認風格也一樣。
int main(int argc, char *argv[])
{
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);    QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
    QApplication a(argc, argv);
}
  • 另外一種辦法就是寫個文本文件qt.conf(Qt程序默認的標準配置文件,必須是這個名字),寫入內容後,放到可執行文件同一目錄即可,此方法採用操作系統的策略進行縮放,推薦此方法,雖然看起來稍微有點模糊,但不會出現發虛等問題,整體一致。
[Platforms]
WindowsArguments = dpiawareness=0
  • 沒有完美的高分屏支持方法,都是隻能儘量滿足,哪怕是windows系統本身,在開啓縮放的時候,任務管理器也是模糊的很(儘管改成124%可以改變,但總歸不是好辦法),還有很多其他知名軟件也是如此。
  • 參考文章 https://blog.csdn.net/startl/article/details/105862817



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章