嵌入式跨平臺C++3D界面開發框架最新版Qt 5.6 支持高DPI縮放

Qt 5.6改進了高DPI支持,以更好的形式支持devicePixelRatio縮放模式。在本文中,咱們將看看如何從Qt應用程序用戶和Qt應用程序開發人員的角度配置和啓用它。html


縮放的sammegame vs 未縮放的samegameios

如今開發應用程序不會被深度覆蓋,但在某種程度上已經覆蓋了。簡言之就是應用程序即便沒有修改也一般受益於這種高DPI模式。瀏覽器

重要新聞:
Qt 5.6:小型初創企業特惠計劃啓動啦!
Qt虛擬鍵盤更新,支持手寫識別功能
汽車信息娛樂系統——使用Qt建立數字儀表集羣

這種高DPI模式是一個虛擬化模式,未必是QWidget / Quick項座標系統的一個單位和在屏幕上一個像素那樣1:1的對應。一個「單位」經過不一樣大小顯示密度的系統有恆定的視覺大小和實際屏幕的像素密度在很大程度上隱藏於應用程序。服務器

每英寸點數(Dots Per Inch, DPI)是顯示密度的傳統測量,一個標準的密度顯示DPI值爲72或96。Qt一如既往地根據系統DPI自動縮放字體,而後應用程序代碼負責縮放硬編碼佈局尺寸。Qt風格將在必定程度上適應字體大小。devicePixelRatio模式是在兩個方面不一樣的:第一,顯示密度在Qt中表示爲一個從1到n不等的比例因子——devicePixelRatio。第二,堆棧的應用比例因子應用低(在蘋果平臺上以操做系統級別)而且不直接在應用程序代碼中使用。佈局

在一個給定的平臺上,DPI和比例因子一般有一個固定的關係:測試

在stackoverflow上有一個測試:爲何在Android上1 x 160 DPI,相比在桌面上~ 90 ?字體

在一篇文章上演示出顯示密度是很困難的。咱們能作什麼來代替devicePixelRatio Qt看到的改變,同時保持顯示比例因子不變。這將致使更高devicePixelRatios的更大的視覺大小:ui

Qt實驗室控制SpinBox各類比例因子,包括不受支持的1.5x。編碼

啓用高DPI支持:Qt須要提供全部系統上顯示的比例因子。這些比例因子有幾個可能的來源:這些值能夠直接由操做系統提供,Qt能夠基於傳統顯示操做系統所提供的指標(如DPI值)計算他們,或者用戶或開發人員能夠直接提供。設置並啓用來源的機制是環境變量和應用程序屬性。spa

歷史欄:X11和Windows上的Qt 5.4和Qt 5.5支持設置有QT_DEVICE_PIXEL_RATIO = n(只能整數)的devicePixelRatio。這種調節器如今已經棄用,取而代之的是其餘幾個,以下所述。

讓咱們來看看三種不一樣的案例:

案例一:操做實現高DPI縮放和提供一個比例因子。

這是蘋果平臺的狀況,操做系統使用高dpi模式,而後Qt和應用程序就一塊兒來湊熱鬧。

這也是當Wayland顯示服務器上啓用了縮放的配置,Wayland上Qt的狀況:

./weston --scale 2

對於實驗傾向,當瀏覽器縮放被激活時,Qt原生客戶端也會獲得一組比例因子。

案例二:Qt支持縮放和計算比例因子。

支持的平臺上:X十一、Windows、Android、Eglfs

Qt能夠在本機不支持的平臺上啓用devicePixelRatio縮放。這能夠經過變量環境或應用程序源代碼屬性的應用程序來實現:

QT_AUTO_SCREEN_SCALE_FACTOR=1 ./myApp

Qt將爲使用本機API的顯示指標查詢操做系統,或者在eglfs狀況下依靠QT_QPA_EGLFS_PHYSICAL_WIDTH、QT_QPA_EGLFS_PHYSICAL_HEIGHT和顯示像素大小。

啓用也能夠由變量環境或由應用程序被否決:

QT_AUTO_SCREEN_SCALE_FACTOR=0 ./myApp

否決的用例是「我沒有從個人顯示獲得正確的DPI值」和「個人應用程序真的須要在顯示像素上可用」。注意這種否決只能禁用「案例二」的縮放:Qt固然不能夠改變操做系統是如何工做的,手動設置比例因子(如下案例)也做爲一個單獨的案例。

案例三:手動設置比例因子。

支持的跨平臺。

QT_SCREEN_SCALE_FACTORS=1;2;1 ./myApp

爲全部屏幕設置比例因子。屏幕順序是QApplication::screens()命令。調節器假設經過DPI設置,文本已經正確縮放顯示,而後縮放其他的用戶界面來進行匹配。

QT_SCALE_FACTOR=2 ./myApp

爲整個應用程序設置全局比例因子,統一縮放一切。這最後一個選項是用於開發和測試,並容許您在任何硬件上測試比例因子。它也能夠用於一些嵌入式的場景,例如若是你瞄準一個有全屏應用程序的顯示類型:調整比例因子直到UI達到正確的視覺大小。

細節:

Q:若是我使用一個以上的調節器,會發生什麼?

A:比例因子是乘法。在2x設備上設置QT_SCALE_FACTOR = 2會給出一個有效的4的devicePixelRatio。

Q:支持非整數比例因子嗎?

A:Qt在API使用qreal,容許經過QT_SCALE_FACTOR設置非整數比例因子。然而,Qt並不保證圖形和風格將在這種狀況下不受干擾。風格可能第一受影響:融合風格一般是最可伸縮。Qt平臺插件大約在記錄的比例因子到最近的整數之間。

Q:一個0.5比例因子容許我在2 x設備的設備像素上工做嗎?

A:這是未知水域,但也有可能性。

可用性

新的高DPI功能Qt 5.6發行版的一部分。想要下載試用,請查看Qt 5.6下載

相關文章
相關標籤/搜索