qt for android教程(qt for android 怎么使用 nativeactivity)

本文目录
- qt for android 怎么使用 nativeactivity
- Qt for Android怎样完成一个可以供安卓开发者使用的.so库
- QT for Android 物理按键监听
- 怎么在win7上既开发qt5 for windows程序,又开发qt5 for android 程序
- qt输出安卓程序设置
- 求助,首次搭建Qt for android开发环境是遇到的错误
- qt android 怎样使用opengl
- qt如何激活android虚拟机
- 如何用Qt写Android应用
- QT for Android怎样设置静态编译
qt for android 怎么使用 nativeactivity
有两种办法,第一种是在第一个activity中使用startActivityForResult()来开始第二个activity第二种是在第二个返回的时候同样开始一个新的activity1 及同样用bundle传送数据,用intent启用一个新的activity 1.
Qt for Android怎样完成一个可以供安卓开发者使用的.so库
可以调用,但是不能直接调用,要通过代码目的JNI去调用,在JNI中导入头文件,通过NDK编译成功后即可。NDK编译步骤:1.选择ndk自带的例子hello-jni,我的位于E:\android-ndk-r5\samples\hello-jni(根据具体的安装位置而定)。2.运行cyg
QT for Android 物理按键监听
我们现在就一步步来看看怎么处理
1.首先实现监听Menu键
通过学习QT的Event机制我们可以知道,该如何去实现监听Menu键。在QT的event系统中,当有event产生时会被QT系统扔到消息队列中等待处理。而我们的应用程序就可以通过event()函数来进行获取,而且我们可以对event进行过滤,决定我们把什么event进行抛弃。
在程序的MianWindow中重写父类的 void keyPressEvent(QKeyEevnt * event) 函数,在此函数可以获取到Android的各种按键监听。
2.实现监听示教器上的其他物理按键
只要我们把问题解决了,自然就能监听到其他的物理按键了。
判断: QT的源码中对未知的key code进行了异常抛出
怎么在win7上既开发qt5 for windows程序,又开发qt5 for android 程序
1.下载安装Qt
5.1.0
for
Android
(Windows
32-bit,
716
MB)
2.打开Qt
Creator,打开帮助,输入android,找到官方说明,按照教程一步步的操作。 3.首先需要下载以下四个软件: 1)The
Android
SDK
Tools
下载安装 2)The
Android
NDK
下载并解压,注意不能有空格 3)Apache
Ant
v1.8
or
later
下载并解压,同上 4)OpenJDK
v6
or
later
下载并解压 4.打开Qt
Creator,选择工具-选项-android,配置好刚刚安装的文件路径,并点击【启动android
AVD管理器】 5.点击
New
新建一个android模拟器,根据自己需要选择Device 6.点击ok-ok,并选择刚刚建立的设备,点击Start启动,此过程比较慢,耐心等待。 7.重启Qt
Creator
已经可以看到有设备了,我们检查
构建和运行
中
构建套件和Qt版本是否正确,确认无误接下来就可以建立工程 8.新建一个Qt
gui项目,选择android
for
arm 9.修改代码,显示hello
Qt #ifndef
MAINWINDOW_H#define
MAINWINDOW_H#include
#include
class
MainWindow
:
public
QMainWindow{
Q_OBJECT
private:
QLabel
*label;public:
MainWindow(QWidget
*parent
=
0);
~MainWindow();};#endif
//
MAINWINDOW_H #include
"mainwindow.h"MainWindow::MainWindow(QWidget
*parent)
:
QMainWindow(parent){
label=new
QLabel("hello
Qt",this);
label-》setGeometry(10,10,100,30);}MainWindow::~MainWindow(){
} 10.直接点击
构建
查看能不能正常编译,如果此间报错,可以留言,尽力为大家解决。一切正常的话直接点击运行,此过程较慢,会编译成apk文件并且部署到模拟器上。怎么在win7上既开发qt5
for
windows程序,又开发qt5
for
android
程序
qt输出安卓程序设置
1.新建一个普通Widgets的工程
?2.选择Desktep Qt5.9.3 MinGW 32bit编译器和Android for armeabi-v7a (GCC 4.9, Qt 5.9.3 for Android armv7)编译器
?3.然后选择默认的就行
?4.在mainwindow.ui界面上,放入两个按钮,分别命名为发布和订阅
?5.选择MinGW 32bit的debug编译模式,构建和运行
?6.选择Android的debug模式重新构建,构建完后,在工程同目录下,生产一个build-AndroidTest3-Android_for_armeabi_v7a_GCC_4_9_Qt_5_9_3_for_Android_armv7-Debug文件夹,在该生产的文件的android-build\bin目录下,会生成该项目的APK
?7.点击运行按钮,在弹出框中选择AVDVertualDevice安卓仿真器,如果没有则点击【Creat Android Virtual Device】按钮新建一个。
?8.点击【ok】按钮后,等待安卓虚拟机启动一段时间,会弹出如下界面:(注意:要等安卓虚拟机完全开机完后,才会自动运行刚才的apk程序,第一次启动可能需要4-5分钟左右,如果需要持续调试,可以不用关闭该安卓虚拟机)
?9.如果刚才生产的apk没有自动启动的话,可以把刚才生产的apk丢进安卓虚拟机中进行测试
求助,首次搭建Qt for android开发环境是遇到的错误
虽然网络上很多人使用 Redhat 或者Fedora 作为上位机操作系统,但是我觉得使用Ubuntu最为方便,因为需要的软件包大部分都可以通过 apt-get 方式来安装,而不必从源代码开始自己编译。 虽然网络上很多人使用 Redhat 或者Fedora 作为上位机操作系统,但是我觉得使用Ubuntu最为方便,因为需要的软件包大部分都可以通过 apt-get 方式来安装,而不必从源代码开始自己编译。要知道,自己编译源代码可不是一件轻松的事,因为在编译过程中经常会出现令人意外而且莫名其妙的错误。 我们使用的操作系统是 Ubuntu 8.04,使用目前最新版本的QT 4.4.0,安装起来即为简单,只要在命令运行以下命令就行: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer 注意在这个版本的软件包中,qt4-dev-tools 包含了Qt Assistant及Qt Linguist等工具,因此不需要单独安装这两个工具。其它的,qt4-doc 是帮助文档,包含了Qt中各个类库的详细说明以及丰富的例子程序,可以使用Qt Assistant 工具来打开阅读。qt4-qtconfig 是配置Qt环境的一个对话框,一般默认就行了,很少有必要去更改。qt4-demos 包含很多可以运行起来的可执行文件以及源代码。qt4-designer是用来设计GUI界面的设计器。 为了连接MySQL数据库,需要安装连接MySQL的驱动程序: sudo apt-get install libqt4-sql-mysql 比起在Windows下安装和配置Qt的MySQL驱动来说,简直太方便了。如果还需要其它的没有默认安装的Qt库,可以在命令行输入 sudo apt-get install libqt4- 然后按tab键自动补全,就会列出所有以libqt4- 开头的软件包,如下图所示:这些都可以使用一个命令搞定,而不需要自己从源码开始编译。在记不准或不知道名字的情况下,使用tab键列出所有可选的软件包是一个很实用的小技巧。 在我的项目中,还需要画一些数据曲线和统计图表等,而第三方的QWT库提供了这些功能。同样,只需要一个命令即可完成安装: sudo apt-get install libqwt5-qt4 libqwt5-qt4-dev 这时,打开Qt Designer,就会发现左边的Widget列表里面多了“Qwt Widget”这一组。 最后,关于集成开发环境我觉得QDevelop很不错,它跟Qt Designer结合的很好,而且有提示类成员函数的功能。运行以下命令安装: sudo apt-get install qdevelop 这样,使用Qdevelop编写代码和编译、调试,使用Qt Designer设计界面,开发效率较高。
qt android 怎样使用opengl
qt 可以通过QGLWidget运行opengl。QGLWidget继承QWidget,能够直接在里面调用opengl的接口。这个在qt文档里有具体说明,也有相关例子,所以不赘述了。但是无法在正式软件里面执行,为什么?因为正式软件是用QGraphicsScene这个场景类操作和操作一切item,而用QGraphicsView将其显示出来,而每一个item都是QGraphicsItem的子类。QGLWidget并不是QGraphicsItem类,我曾经尝试用普通的QWidget类那样,通过proxy来加进QGraphicsItem,但是没有成功。或许有方法,但是没有找到。
于是我放弃了用QGLWidget来操作opengl的打算,寻找直接在QGraphicsItem中操作opengl的方法。通过查看文档和示例代码,找到了这个方法:
1 往qt工程文件里添加opengl以及对应的lib。
2 对QGraphicsView进行一个三维对话框的指定,代码如下:
QGLWidget *widget = new QGLWidget(QGLFormat(QGL::SampleBuffers));
widget-》makeCurrent();
QGraphicsView view;
view.setViewport(widget);
上述代码告诉了 QGraphicsView 类当前绘制的对象是支持opengl的。于是所有的场景中的item都将绘制到widget 上。
3 写一个QGraphicsItem的继承类,特别要重写paint函数。代码如下:
void XXX::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter-》beginNativePainting();
glColor3f(0.5,1.0,0.2);
glBegin(GL_TRIANGLES);
glVertex3f(100.0,100.0,-100.0);
glVertex3f(150.0, 100.0, -100.0);
glVertex3f(100.0, 150.0, -100.0);
glEnd();
painter-》endNativePainting();
}
上面这个函数主要是用opengl接口绘制了一个三角形。记住,在opengl绘制之前一定要执行painter-》beginNativePainting()以及painter-》endNativePainting()这两个语句。
QGraphicsScene、 QGraphicsView和QGraphicsItem的关系可以查阅相关文档,也不赘述了。
不过我按照这个方式画的三角形,怎么也在窗口上显示不出来,找了半天才发现问题在这个函数上QGraphicsItem::boundingRect()。这个函数是 干什么用的呢?主要用来返回该item的初始化大小,这个大小不会轻易改变,后续的改变都可以通过矩阵来完成,但是初始大小是不变的。QGraphicsView通过这个矩形来判断当前item是不是需要重绘,如果在重绘区外,则不调用重绘函数了。同时碰撞检测之类,也可以用这个矩形来判断。原来,item本身的矩阵外包框不对,所以才导致了重回不出来,改过来就正确了。
上面说的很潦草,具体怎么改的步骤就不说了。要想正确的绘制,必须得弄清楚坐标系的关系,QGraphicsScene、QGraphicsView以及QGraphicsItem这三个坐标系到底是什么关系。我看了文档,也自己进行了测试,但是感觉文档和测试的结果有些出入。具体出入不说了。说一下自己得心的吧。
先说明:涉及到一切大小和长度,都是像素大小,至少我测试的结果是这样的。
在建立QGraphicsScene对象的时候,有一个构造函数是矩形,这个矩形是什么含义呢?经过测试,发现这个矩形并没有指定弹出窗口的位置,比如,我把矩形的左上角点指定为-1000,-1000,显示的位置和1000,1000是一样的,而长度则正确指定了(当然,可能会有滚动条)。所以,这个矩形的左上角点并不是显示的窗口的位置,而是它在逻辑上的左上角点。我们显示一切item,都是以这个逻辑上的坐标系为准来绘制的。比如,左上角点是-1000,-1000,而item的位置在-500,-500,则这个-500,-500相当于在显示窗口的左上角往下各加500个像素的坐标的位置。
那么 QGraphicsItem的boundingRect是什么意思呢?返回的是什么大小?是以什么坐标系显示的大小?首先,这个大小肯定是以像素为单位的,其次,这个矩形的坐标是以QGraphicsScene的逻辑坐标为准的。当然这个大小是没有任何矩阵叠加的大小。有了矩阵叠加后,实际的矩形可能会发生变化。假如在boundingRect中指定矩形的左上角为100,100,那么最终体现的位置则是QGraphicsScene逻辑坐标100,100的位置,如果QGraphicsScene的左上角点已经指定为-1000,-1000,那么这个位置实际上就是离窗口左上角点1100,1100的位置(由于有滚动条,所以也不一定是这个长度。)
那么在QGraphicsItem的paint函数中进行了opengl绘制用的是什么坐标呢?其实用的也是QGraphicsScene的逻辑坐标。如上面的例子,绘制的直角三角形直角顶点是0,0,那么显示的位置就是距离显示窗口左上角点1000,1000的位置。不过opengl的所有绘制都是没有矩阵叠加的基础上,如果用矩阵叠加,则显示的位置肯定和指定的有区别了。比如,我用setPos强制指定一个位置,这个位置将和opengl绘图坐标相叠加,最后显示到窗口上。我推测setPos其实是改变了矩阵,是一个平移矩阵。
qt如何激活android虚拟机
1、首先下载JAVA。
2、其次打开JDK安装包,会先安装jdk部分,安装包中有jdk+jre,点击下一步。
3、最后更改或记住安装路径后,点击下一步,安装完成后,还会弹出一个jre的安装,同样点下一步,更改或记住安装路径后,等待安装完成即可激活虚拟机。
如何用Qt写Android应用
我也有动力写这篇文章了。下面我简单介绍一下用Qt Creator写Android应用的步骤。PS: 在这之前你应该搭建好一个Qt-Android环境,参考我另一篇文章:设置qt-android开发环境第一步:创建一个Android项目我以Empty Qt Project为例。点击Choose后出现一个对话框要求填写Project的名字和选择路径,输入完成后点击Next,到下面一个比较重要的操作:选择Qt Version注意,默认是选择Destkop的,正确应该按上图设置。设置后按Next确认一下,没有错就按Finish完成Qt-Android项目的建立。只要正确建立了Qt项目,就完成了一大半了。下图是完成后的一个截图:第二步:编写程序在这步大家按照平常Qt Creator的步骤写程序就好。但是注意的是,有些模块暂时还没有移植,例如Qt网络模块,所以不能有网络相关的应用(不过我想这迟早会移植的)。作为例子,我就用hello world吧:#include《QApplication#include《QLabelintmain(intargc,char**argv){QApplicationapp(argc,argv);QLabel*label=newQLabel("《palign=centerHello,World!《/p");label-show();returnapp.exec();}第三步:设置编译选项Projects标签 - Run 展开Package configurations,选择Android target SDK,(android7为例)展开紧跟下面的Deploy configurations,选择Deploy local qt libs然后按左边倒数第三个绿色三角按钮运行:第四步:手机上运行你写的应用会打包成apk放在你项目文件夹里的/android/bin里面。把它拷到手机上安装。但是这样手机还不能运行这个程序,毕竟Android系统没有Qt的库。这个时候你就需要Ministro,一个为Android系统Qt程序运行下载所需要的库。可以到电子市场搜索Ministro,或者到Ministro项目里下载:Ministro。安装好Ministro后再运行Qt程序,根据提示下载需要的库。
QT for Android怎样设置静态编译
Qt默认的编译方式是动态编译的,但是有时候编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译程序,Qt要实现静态编译必须库文件也是静态编译的,可以用这个命令编译静态库:
1.将C:\Qt\2010.05\qt\mkspecs\win32-g++\qmake

更多文章:
html document对象(载入浏览器的html文档都会成为document的对象吗)
2026年9月21日 16:00
安装包怎样下载mysql(如何在官网上下载可安装版的MySQL数据库)
2026年9月21日 15:30
威廉尖叫音效在线(渴求《勇敢的心》的配乐a gift of a thistle下载)
2026年9月21日 15:20
wordpress建站教程视频(WordPress建站的基本流程)
2026年9月21日 14:00
powerquery(power query中文含义是什么)
2026年9月21日 11:50
reactnative文档扫描(为什么要学习React Native)
2026年9月21日 10:30





