隨著項目深入,需要移植到安卓上,問題來了,QML安卓適配!
幸好PC端程序和手機屏幕長寬比例相似。雖然單位像素,尺寸不同,通過比例縮放,可以實現組件PC和安卓通用代碼。
第一步:定義全局的轉換函數(300,500是你的PC端設計尺寸)
1 property var x_scale:mainWindow.width/300 2 property var y_scale:mainWindow.height/500 3 4 function get_x(x) 5 { 6 return x*x_scale; 7 } 8 function get_y(y) 9 { 10 return y*y_scale; 11 }
第二步:將所有相關尺寸的都通過上面的轉換函數計算新值
1 Text { 2 id:nameText 3 x:get_x(8) 4 y:get_y(11) 5 width:get_x(80) 6 horizontalAlignment:Text.AlignRight 7 color: "#000000" 8 text: "" 9 }
第三步:對於有些控件,安卓和PC端表現形式不一樣,需要通過判斷平台,額外定義。判斷平台代碼
function is_android() { return (Qt.platform.os == "android"); } //調用方法 Image { id: imageLogo y: get_y(58) width: get_x(167) height: get_y(70) anchors.horizontalCenterOffset: is_android()?get_x(-8):get_x(-4) anchors.horizontalCenter: parent.horizontalCenter source: "logo.png" }
最後,對於字體的大小的適配,推薦使用pixelSize來定義,同樣需要轉換函數來計算新的尺寸,這樣可以跟其他控件保持一致。