Qt for Android 使用 手记 _JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Qt for Android 使用 手记

Qt for Android 使用 手记

 2012/2/24 9:58:30  wan_2004  程序员俱乐部  我要评论(0)
  • 摘要:android上使用qt的开源项目是necessitas项目地址是http://sourceforge.net/projects/necessitas/files/根据你的平台下载相应的necessitasQtCreator安装(我下的necessitas0.3)我这里用的Linux下载好后安装,根据需要选择你要下的东西,比如Ant,AndroidSDK之类(注:ant必须要1.8.0以上,AndroidSDK必须要有plarform-tools,如果不知道就不要选择直接默认即可。
  • 标签:android for 使用

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文件上画一个按钮

注册事件代码如下

void MainWindow::on_pushButton_clicked()
{
    QMessageBox::information(this,tr("中文"),tr("提醒 你点了 pushButton"));
}

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

#include "mainwindow.h"

#include <QtGui/QApplication>
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTextCodec* codec = QTextCodec::codecForName("GBK");
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForTr(codec);
    MainWindow mainWindow;
    mainWindow.setOrientation(MainWindow::ScreenOrientationAuto);
    mainWindow.showExpanded();

    return app.exec();
}

?(!这里我都是把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)上测试,执行效果一样

?

  • 大小: 88.3 KB
  • 大小: 21.3 KB
  • 查看图片附件
发表评论
用户名: 匿名