• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
zhaifd'Blog
迷失在代码丛中的蝴蝶
博客园    首页    新随笔    联系   管理    订阅  订阅

Qt for Android(转)

android 上使用 qt 的开源项目是 necessitas 项目地址是 http://sourceforge.net/projects/necessitas/files/

根据你的平台下载相应的necessitas QtCreator 安装(我下的 necessitas 0.3)

我这里用的Linux

下载好后安装,根据需要选择你要下的东西,比如 Ant ,Android SDK之类 (注:ant必须要 1.8.0以上 ,Android SDK 必须要有plarform-tools,如果不知道就不要选择 直接 默认即可。)

然后他自己下载组件安装(这个跟QtSDK的包管理器做的差不多)

装好后我们先建立一个 Android虚拟机 我建立是Android 2.2 版本的

 

然后用QtCreator 建立一个 Test 的移动项目

如图

选择目标要选 Android

 

然后我们零星 在UI文件上画一个按钮

注册事件代码如下

Cpp代码  收藏代码
  1. void MainWindow::on_pushButton_clicked()  
  2. {  
  3.     QMessageBox::information(this,tr("中文"),tr("提醒 你点了 pushButton"));  
  4. }  

 然后跟PC 上一样设置 中文编码

Cpp代码  收藏代码
  1. #include "mainwindow.h"  
  2.   
  3. #include <QtGui/QApplication>  
  4. #include <QTextCodec>  
  5. int main(int argc, char *argv[])  
  6. {  
  7.     QApplication app(argc, argv);  
  8.     QTextCodec* codec = QTextCodec::codecForName("GBK");  
  9.     QTextCodec::setCodecForCStrings(codec);  
  10.     QTextCodec::setCodecForLocale(codec);  
  11.     QTextCodec::setCodecForTr(codec);  
  12.     MainWindow mainWindow;  
  13.     mainWindow.setOrientation(MainWindow::ScreenOrientationAuto);  
  14.     mainWindow.showExpanded();  
  15.   
  16.     return app.exec();  
  17. }  

 (!这里我都是把QtCreator编辑器的默认编码设置成了 GBK)

之后Crtl + B 编译  Crtl + R运行

运行的时候他会报错 说是找不到  ministro 服务 在这里 http://sourceforge.net/projects/ministro.necessitas.p/files/

这个是干神马的呢  ,据我看他源码了解(这里 git clone git://git.code.sf.net/p/necessitas/ministro/git necessitas-ministro-git 不过貌似 源码 跟 ministro.apk有点脱节 )

它是一个Android Service ,通过的ADIL访问的。他的作用是根据你当前Android 系统的环境 下载相应 Qt的Lib文件  比如 libQtCore.so libQtGui.so,外带 Qt启动代理程序 来装载这些 链接库文件 实现 jni代理调用等,这个是KDE 的一个开源项目(很难找。。。https://projects.kde.org/projects/playground/mobile/necessitas/android-qt/repository   怀疑 Ubuntu for Android 出来之后 KDE 也会有动作了)

你安装了之后 ,他再次启动Qt 程序 他会根据你程序的需要下载库,我这里只是简单测试,所以大致下载了libQtCore.so libQtGui.so

还有一个 QtIndustrius-8.jar

(主要类 org.kde.necessitas.industrius.QtActivityDelegate 这里可以看 https://projects.kde.org/projects/playground/mobile/necessitas/android-qt/repository/revisions/master/entry/src/android/jar/src/org/kde/necessitas/industrius/QtActivityDelegate.java)

这个就是 Qt启动代理程序 

然后就是它加载各个lib,然后启动你的lib.so的main和注册窗口句柄到Qt,并回调 你Qt项目里面Android 类文件 QtActivity.java 启动 你项目,更有QtActivity.java 链接了各个事件在通过 java 反射回调QtActivityDelegate 形成各个事件 这个就是他的运转过程

下面是程序是在虚拟机上执行的截图

 

似乎QMessagebox 实现的不太好看。

在我的真机(I9100 Android 2.3.5)上测试,执行效果一样

转:

迷茫的半吊子

 
 
淡泊以明志,宁静以致远 ---一直迷失在代码丛中的蝴蝶
posted @ 2013-05-16 21:40  zhaifd  阅读(625)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3