请教:Qt在IOS和Android上GUI的实现原理是什么?

237 views
Skip to first unread message

Kermit.Mei

unread,
Dec 2, 2013, 9:58:40 PM12/2/13
to qt-c...@googlegroups.com
Hello all,

Qt在Linux和Win上,GUI一般是通过调用系统原生API来实现的,
只是在代码上用Qt做了一个封装。

但是,Android和IOS上GUI模块和库差别都挺大,尤其是没有直接
可用的C/C++ API,那么这种调用系统原生API的封装式实现可能就很难
再有用武之地了吧? 而且,就我之前写的那几个例子来看,那些空间肯定
不是当时所用系统上的原生控件。 所以,我怀疑Qt是不是基于OpenGL 重
新实现了一套用于绘制GUI的渲染系统在IOS和Android上用?

我Google了一把,没找到对这个问题比较直观的回答,所以在这里发帖
问问,往指点一下,或是给个链接,多谢!

B.R
Kermit

Liang Qi

unread,
Dec 2, 2013, 11:25:59 PM12/2/13
to qt-c...@googlegroups.com
Android的porting我没玩过,一般Qt和平台相关的代码,可以看看这里

这部分的概念叫QPA,这里只是QtGui及以上的接口。QtCore中目前还是有些类似_mac.mm之类的源码,没有组织在一起。

iOS上肯定是ObjectC/ObjectC++了,其实和C/C++可以互相调用。Mac上这么做已经很多年了。Android说是Java的,其实应该也是支持C/C++的,不过Qt中肯定也实现了Java和C/C++互相调用的部分。

齐亮


2013/12/3 Kermit.Mei <kermi...@gmail.com>
Kermit

--
您收到此邮件是因为您订阅了 Google 网上论坛的“Qt中文”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 qt-china+u...@googlegroups.com
要向此网上论坛发帖,请发送电子邮件至 qt-c...@googlegroups.com
通过以下网址访问此论坛:http://groups.google.com/group/qt-china
要查看更多选项,请访问 https://groups.google.com/groups/opt_out



--
http://www.qiliang.net

Kermit.Mei

unread,
Dec 3, 2013, 12:45:00 AM12/3/13
to qt-c...@googlegroups.com, qt-c...@googlegroups.com

在 2013年12月3日,下午12:25,Liang Qi <cavend...@gmail.com> 写道:

Android的porting我没玩过,一般Qt和平台相关的代码,可以看看这里

这部分的概念叫QPA,这里只是QtGui及以上的接口。QtCore中目前还是有些类似_mac.mm之类的源码,没有组织在一起。

iOS上肯定是ObjectC/ObjectC++了,其实和C/C++可以互相调用。Mac上这么做已经很多年了。Android说是Java的,其实应该也是支持C/C++的,不过Qt中肯定也实现了Java和C/C++互相调用的部分。

齐亮

嗯,照您这么说,其实现原理还是对原生控件进行了API封装。 不过,我之前测试后
觉得,至少在IOS上面,那个QLineEdit很定不是直接调用了UITextField控件。所以我
一直在疑惑Qt在IOS/Android上用的是不是这种方法。

B.R
Kermit

Liang Qi

unread,
Dec 3, 2013, 1:55:11 AM12/3/13
to qt-c...@googlegroups.com
Qt的控件从来都不是直接使用Native控件的...

只是QPainter一级的绘图操作上和Native API相关吧。

对于系统Native控件的使用,例如菜单,工具栏之类的,应该都在QtMacExtras之类的repo里面。

其它Native控件应该可以和Qt控件一起使用,如果有问题,请报告bug。


2013/12/3 Kermit.Mei <kermi...@gmail.com>
Reply all
Reply to author
Forward
0 new messages