qt :
1 signal /slot 机制 : 更灵活的对象间通讯,需要用到meta对象,要用moc 编译
这有别于GTK的signal /Callback function 方式
2 国际化和本地化
利用tr函数 , linguist等工具,locale等
3 plug-in
包括style plugin , keyboard plug in ...
4 MV 模式
MVC : Model , View ,Control
Model指的是数据,View 指的是界面,Control指的是用户输入
Qt 把View + Control合在一块(这样实现简单些),变成MV模式
5 XML ,SQL 等的支持
对于XML 支持DOM/SAX两种方式
DOM
SAX :简单 快,操作麻烦
DOM : 树结构, 消耗内存大
6 network support
比如QHTTP , QFTP
QT embedded :
1 干掉了X server , 实现QWS server
server 负责cursor , screensave , key , mouse .
2 没有专门的server ,应用程序启动 -qws 则是server ,所以代码里有很多地方判断是否是server
3 server ,client 间 socket 通讯
4 对于Graphic Rendering, 每个应用程序自己画,然后server copy到framebuffer中
具体如下:
窗口A ---> Memory A
窗口B --> Memory B
窗口C --> Memory C
当window A 要求更新的时候, 它发送一个请求给 server
server 就开始计算,windw A的那些区域要更新. (因为可能window A 被 window B 覆盖了一部分
比如 :
如上图,window A的右半部分被B覆盖,此时server只copy 左半部分,绿色的那块区域)
5 实现qvfb (x86平台) 来模拟调试
这个非常好,很多其他的GUI 系统,比如LGUI , minigui没有实现qvfb , 此时要在PC上看,必须要切换到console下面,也就是PC机启动的时候以Framebuffer方式启动,而非X window . 这样很麻烦,开发和调试环境要切换来切换去,毕竟很多人不喜欢在文本模式下编写代码,而喜欢在x window下用source insight等来编写 .
原理是这样的 :
qvfb 也是一个X11 应用程序 , 它模拟framebuffer .
1) qvfb 启动
2) 别的应用程序加上选项-display QVFb:0
./analogclock -qws -display QVFb:0
此时,应用程序所用的QScreen派生类为 QVFbScreen . 这个类会将输出到 qvfb上
QSCreen
----> QLinuxFbScreen (实际device上)
----> QVFBScreen (qvfb 模拟)
6 2 QCopChannel用于多进程间通讯
(QCopChannel 通讯{BANNED}最佳后是基于linux下的socket进行通信的 )
这有别于通用的DBUS,
Qt也集成了DBUS的支持
阅读(748) | 评论(0) | 转发(0) |