找回密码
 立即注册
收起左侧

用C4droid写Qt程序的一些问题及临时解决方法

1
回复
12293
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 原创 2013-6-28 20:50:08 显示全部楼层 |阅读模式
本帖最后由 lukasliu 于 2013-8-10 18:35 编辑

先简单介绍一下C4droid。C4droid是一个Android平台上很好用的C/C++编程工具,配合GCC plugin for C4droid可以进行Qt编程。截止目前(2013.06.28)Qt库应该是Qt4.8。Qt上的大部分模块都可以使用,少部分还不完善。
不过毕竟,在触屏设备上写代码效率极其低下,所以我只是用它来编译生成apk包,而代码书写则是在电脑上进行(从这点来看PC的地位是无法被平板取代的,如果你要说用otg线连上鼠标键盘的话那就超出了平板本身的范畴了)。
下面说说我遇到的问题吧。
一、数据库驱动无法加载,lastError()给出的提示为 Driver not loaded Driver not loaded

我编译的是Qt自带的一个demo,叫做sqlwidgetmapper,在路径为Qt\2010.04\qt\examples\sql\sqlwidgetmapper(我用的Qt4.6.3)。window.cpp中第110-114行之间的提示信息我改成db.lastError().text(),编译运行后就出现上述错误提示。这是由于libqsqlite.so没正确加载。解决方法自然就是让该库能正确加载上。

首先需要把设备进行root,因为我们需要拿到libqsqlite.so这个文件,没有root权限无法操作,它在

/data/data/org.kde.necessitas.ministro/files/dl/0/stable/plugins
文件夹中。顺便说一句,ministroII下载的Qt库都在
/data/data/org.kde.necessitas.ministro/files/dl/0/stable
文件夹中。这里我们先把编译好的程序导出为apk包,名称默认为sqlwidgetmapper.apk,然后安装。在前面提到的plugings文件夹中找到sqldrivers文件夹,这是sqlite3的qt驱动,将sqldrivers文件夹复制到
/data/data/com.sqlwidgetmapper/lib
文件夹内即可。

com.sqlwidgetmapper文件夹是在程序安装完成后自动生成的。里面的lib文件夹就存着主程序的so文件(libapplication.so),就相当于我们在windows Qt环境下编译出来的exe文件。
二、图像无法显示

编译安装完animatedtiles,打开程序后发现没有背景图片,与PC上的效果不同,这倒不影响使用。有了上面的经验,就可很快处理好,将plugings中的imageformats文件夹复制到相应lib文件夹中,再次运行程序,perfect!与电脑上的完全一样。

不过上述方法只是个权宜之计,操作起来太麻烦,软件不便于朋友间分享。所以向高手求助一下如何对apk重新打包的问题:就是如何能把这几个库直接塞到apk包里面?

三、滚动条太窄

编译出的很多程序都有滚动条,但是因为程序原来是为PC写的,设备尺寸变化导致滚动条太小,不方便使用。若果设备支持多点(2点就够)触控的话可以不用考虑,只要用两个手指进行滑动就可以了使需要滚动的程序界面进行滑动了。如果觉得还是不方便的话就需要自己改程序了。这里提供一个诺基亚论坛上找到的一组例子供初学者参考,例子本来限制不允许在Qt4.8环境编译的,我把那两行限制给注释掉了。附件中包含我已经导出的apk包。
建议社区管理员能允许上传7z格式文件。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:1570 天
连续签到:1 天
2013-7-20 11:24:55 显示全部楼层
挺好的文章,希望以后可以多发一些这样实践经验的帖子!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了