原創|行業資訊|編輯:黃竹雯|2016-03-18 17:04:54.000|閱讀 1876 次
概述:Qt 5.6改進了高DPI支持,以更好的形式支持devicePixelRatio縮放模式。在本文中,我們將看看如何從Qt應用程序用戶和Qt應用程序開發人員的角度配置和啟用它。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Qt 5.6改進了高DPI支持,以更好的形式支持devicePixelRatio縮放模式。在本文中,我們將看看如何從Qt應用程序用戶和Qt應用程序開發人員的角度配置和啟用它。
現在開發應用程序不會被深度覆蓋,但在某種程度上已經覆蓋了。簡言之就是應用程序即使沒有修改也通常受益于這種高DPI模式。
這種高DPI模式是一個虛擬化模式,未必是QWidget / Quick項坐標系統的一個單位和在屏幕上一個像素那樣1:1的對應。一個“單位”通過不同大小顯示密度的系統有恒定的視覺大小和實際屏幕的像素密度在很大程度上隱藏于應用程序。
每英寸點數(Dots Per Inch, DPI)是顯示密度的傳統測量,一個標準的密度顯示DPI值為72或96。Qt一如既往地根據系統DPI自動縮放字體,然后應用程序代碼負責縮放硬編碼布局尺寸。Qt風格將在一定程度上適應字體大小。devicePixelRatio模式是在兩個方面不同的:第一,顯示密度在Qt中表示為一個從1到n不等的比例因子——devicePixelRatio。第二,堆棧的應用比例因子應用低(在蘋果平臺上以操作系統級別)并且不直接在應用程序代碼中使用。
在一個給定的平臺上,DPI和比例因子通常有一個固定的關系:
class | DPI | Scale Factor |
---|---|---|
ldpi | 120 | 0.7 |
mdpi | 160 | 1 |
hdpi | 240 | 1.5 |
xhdpi | 320 | 2.0 |
xxhdpi | 480 | 3.0 |
xxxhdpi | 640 | 4.0 |
在stackoverflow上有一個測試:為什么在Android上1 x 160 DPI,相比在桌面上~ 90 ?
在一篇文章上演示出顯示密度是很困難的。我們能做什么來代替devicePixelRatio Qt看到的改變,同時保持顯示比例因子不變。這將導致更高devicePixelRatios的更大的視覺大小:
Qt實驗室控制SpinBox各種比例因子,包括不受支持的1.5x。
啟用高DPI支持:Qt需要提供所有系統上顯示的比例因子。這些比例因子有幾個可能的來源:這些值可以直接由操作系統提供,Qt可以基于傳統顯示操作系統所提供的指標(如DPI值)計算他們,或者用戶或開發人員可以直接提供。設置并啟用來源的機制是環境變量和應用程序屬性。
歷史欄: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支持縮放和計算比例因子。
支持的平臺上:X11、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下載。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網