随着项目深入,需要移植到安卓上,问题来了,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 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) 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来定义,同样需要转换函数来计算新的尺寸,这样可以跟其他控件保持一致。