QML适配不同设备
原文地址:http://blog.csdn.net/zhx6044/article/details/44180819
前言
做嵌入式和移動開發,不同的設備,不同的分辨率需要UI能夠適配,這是一個很現實的問題。QML作為Qt中為UI而生的,使用QML一定要解決適配的問題。
分辨率
現在同一尺寸的屏幕,其分辨率也是不同,在QML中使用?anchors?進行相對的布局時,其是以像素為單位。現在有一個概念,叫做每英寸像素數目。當設備的PPI不同時,控件的大小不同,這可能導致,如果設計是在一個尺寸小PPI低的屏幕上設計,將程序放到一個尺寸大PPI高的設備上,那么控件看上去就更小了,所以在QML中直接使用像素布局是不可取的。
Screen
QML中提供的Screen為我們提供了設備相關的數據,其中很重要的是DPI(Devices per mm pixel),設備每毫米的像素點,通過這個我們就可以以mm為標準來做布局,這樣我們就不會出現,在高分辨率的設備上,控件變得很小。
property real dpi: Screen.pixelDensity.toFixed(2)- 1
- 1
設備一個屬性,取兩個小數點。那么可以這樣設置
anchors {top:parent.top; topMargin: 2 * dpi;}- 1
- 1
這個控件離parent上部 2mm,不管在那個設備上,其表現都是一樣的,那么對于控件的長和寬表現也是一樣的。
我們設計界面的時候肯定在一個尺寸上設計,那么如果換了一個很大的設備,那么控件就不適合了,那么我們需要有一點伸縮性。
伸縮
Screen.height和Screen.width為當前的顯示設備的長和寬,但是他們是像素,得到實際的尺寸,需要除以dpi。?
假設我們設計的時候的長和寬為a和b,運行時得到的長和寬為c和d。?
那么在布局的時候就應該是這樣的
- 1
- 1
那么對于控件的長和寬也是一樣的,這樣我們就實現了在不同的設備上實現控件和控件間隔隨尺寸大小不同伸縮。
總結
- 上一篇: Qt for Android调用andr
- 下一篇: Qt for Android 调用and