Qt安卓教程(1): 从Qt5.1开始
该文章原创于Qter开源社区(www.qter.org),作者Joey_Chan,转载请注明出处!系列教程传送门:
第二篇:http://www.qter.org/forum.php?mod=viewthread&tid=563
第三篇:http://www.qter.org/forum.php?mod=viewthread&tid=918
第四篇:http://www.qter.org/forum.php?mod=viewthread&tid=1382
第五篇:http://www.qter.org/forum.php?mod=viewthread&tid=1664
第六篇:http://www.qter.org/forum.php?mod=viewthread&tid=2518
本系列教程主要讲述与安卓移植版Qt的相关内容,如平台特性、功能限制、特定用户体验和内容发布等,其余与Qt自身非平台相关的内容不会作详细讲述,笔者默认童鞋们已经有一定的Qt功底。
另:请自备安卓机子一台,不推荐用模拟器。
第一篇:从Qt5.1开始
1. 准备工作
站长yafei已经发过这个准备教程了,我这里只简单说明一下要点。(笔者使用的是Kubuntu 12.04,其它系统可能会有少许差异,有问题欢迎提问)
1.1 下载好android sdk和ndk,解压即可;
1.2 下载好Qt5.1并安装;
1.3 (注意!这个必须)下载安装最新Qt Creator,版本2.8或以上;(过时)
(更新)新版本的Qt集成安装包已经包含了版本大于2.8的creator
1.4 下载并配置好jdk和ant;
1.5 (Linux版请注意)android sdk自带的adb可能没有连接设备的权限,请把这个adb改为root属主,用chmod u+s特殊授权,再增加普通用户访问权限(777),这个步骤看不懂的童鞋请拿着Linux教程面壁去;
2. 开始动手
启动creator,注意必须是版本大于等于2.8的,目前Qt5.1自带的是2.7.2。
打开creator后,先不要急着建项目,去选项看看Android相关配置有没有问题,我这里先贴上我自己的Linux版本配置:
然后确定编译器、Qt版本和编译打包套件的配置: (至少要有一个arm v7的套件在)
确定无误后可以开始新建项目了,我这里只选了arm v7 gcc 4.8的,x86可忽略(市面上几乎没有x86的手机卖,当然现在x86的电脑也可以装安卓了)
建好项目后,这里暂时不改源代码,直接去“项目”选项卡
然后点“运行”(项目里面的,不是左下角的)
打开第二项“包配置”
选择安卓目标sdk,这里的sdk就是指安卓的sdk版本(必须大于等于10,这是Qt5的基本要求),图中的“android-10”就代表android 2.3,这个需要在android的sdk里面自行安装
点左下角的锤子进行编译
然后就可以选择图中的“从应用程序读取信息”,这个是必须步骤,这个步骤可以自动在apk中加载需要用到的Qt库
签名什么的暂时不需要,如果是自己玩的话
打开第三项“Deploy配置”,这里童鞋们可以打开版本低于2.8的creator,会发现这里有很大的不同,特别是最下方的“Bundle Qt libraries in APK”,这个是把Qt库打包进APK的选项,老的creator没有这个功能,这就是为什么我要求下载最新版本的creator了
接下来请连上手机,记得打开手机的debug模式,点击左下角的绿色三角形,程序就在手机上运行了,如图,hello world
把编译好的apk拿出来,就可以直接给小伙伴们安装了,不需要别的支持,让他们惊呆一下吧。
3. 加工一下
打开main.qml这个文件,在第六行下面加一行,输入 id:hello ,
然后把下面onclicked里面的内容改为 hello.text = parent.width + " , " + parent.height
意思就是把hello world改为当前程序的占用分辨率
运行效果如下
说明了Qt for Android已经自带有分辨率自适应的能力,因为代码头部写的大小是360×360,而实际显示是程序实际占用的分辨率。
能力有限请多多包涵,欢迎各种没节操的批评。
BTW,目前还没打算下一期写什么内容,童鞋们可以提个建议。
楼主,加油!继续把教程写下去!!!!! 建议把相关下载链接,代码等附件上传 楼主真是辛苦了,好好学习 建议写sensor相关的部分。 wins 发表于 2013-8-8 02:04 static/image/common/back.gif
建议把相关下载链接,代码等附件上传
链接就只有qt的官网,代码也只有creator自建的项目,所以没必要上传。有什么不懂的可以直接回帖问,本期其实没什么实质性内容。 Joey_Chan 发表于 2013-8-8 09:18 static/image/common/back.gif
链接就只有qt的官网,代码也只有creator自建的项目,所以没必要上传。有什么不懂的可以直接回帖问,本 ...
在前面可以先写下自己的环境,比如用的是什么linux系统。 楼主加油~想问下 手机开发主要是使用QML么 yafeilinux 发表于 2013-8-8 09:35 static/image/common/back.gif
在前面可以先写下自己的环境,比如用的是什么linux系统。
对哦。。。忘了写,等会加上去 揪揪凯 发表于 2013-8-8 10:17 static/image/common/back.gif
楼主加油~想问下 手机开发主要是使用QML么
是qml,官方没有为widget类做手机方向的优化 Joey_Chan 发表于 2013-8-8 10:31 static/image/common/back.gif
是qml,官方没有为widget类做手机方向的优化
问个问题我现在自定义了一个按钮组件现在想在另一个QML文件里修改组件内部的属性,比如大小颜色, 应该怎么去访问? 揪揪凯 发表于 2013-8-8 11:26 static/image/common/back.gif
问个问题我现在自定义了一个按钮组件现在想在另一个QML文件里修改组件内部的属性,比如大小颜色,...
可以用附加property,如:Item{
id: button
property color color: "white"
Rectangle{
color: parent.color
}
}这样就可以修改里面的颜色了,如 button.color = "black" 真机测验,成功!:lol谢谢楼主分享! phm 发表于 2013-8-8 16:54 static/image/common/back.gif
真机测验,成功!谢谢楼主分享!
自己动手,丰衣足食:lol 建议同时贴上window下的配置信息。
因为大部分人用的还是window系统。linux相关系统还是躺在虚拟机上的。 期飞 发表于 2013-8-9 11:11 static/image/common/back.gif
建议同时贴上window下的配置信息。
因为大部分人用的还是window系统。linux相关系统还是躺在虚拟机上的。 ...
我没有用windows系统的,用Ubuntu好几年了。其它配置信息可以去站长yafei之前的教程找找,或者qt自己的文档里面搜索“android”就有了 我用的是64位的windows 8专业版。
我的配置也就是这样的:
Android SDK里我只下了Android 4.0.3 (API 15)(因为我的机子是安卓4.0.4的);
Android NDK的话,我去官网下载了最新的r9 (64-bit),编译运行目前并没有问题(我也试过r8e (32-bit)的,也是目前没有问题);
至于Qt的话,官网下载的Qt 5.1.0 for Android (Windows 32-bit, 716 MB),我安装了组件里的ARMv7的部分,ARMx86没安装(就跟楼主说得一样);
而QtCreator的话,官网下载的32位2.8.0有楼主所说的打包的选项,但是好像缺少了一个qml2puppet.exe,让我无法在32位的2.8.0里直接编辑qml(而且我试过自己),只好去上面下载的qt版本里绑定的qtcreator2.7.2里修改qml,然后回来2.8.0编译运行。
phm 发表于 2013-8-9 11:40 static/image/common/back.gif
我用的是64位的windows 8专业版。
我的配置也就是这样的:
Android SDK里我只下了Android 4.0.3 (API 15)( ...
qml2puppet是creator里面必有的组件,试试重新装一次2.8的,或者从2.7那里复制过去 Joey_Chan 发表于 2013-8-9 12:15 static/image/common/back.gif
qml2puppet是creator里面必有的组件,试试重新装一次2.8的,或者从2.7那里复制过去 ...
重新装一次也是一样,没有qml2puppet.exe。而且2.7那里的qml2puppet是qt5.1编译的,但2.8用的是qt4.8.4(VS2010)编译的,复制过去也没有用。 phm 发表于 2013-8-9 12:25 static/image/common/back.gif
重新装一次也是一样,没有qml2puppet.exe。而且2.7那里的qml2puppet是qt5.1编译的,但2.8用的是qt4.8.4(V ...
那我就不清楚了,我用的linux版没有这问题,帮不了你不好意思哦