1.BB10的战略架构与新机遇
       BB10平台的战略架构跟iOS是一致的,将会引入Native的代码。相比以往BB平台所使用JAVA开发,现在提出的Native的代码,将会更加高效与迅速。
       此外BB10平台提供更多优秀开源的C++库供开发者使用,著名的二维码ZXing(斑马线)库、STL、基础C库等,全部都能无缝的在BB10平台上运行。
       更加令人惊喜的是开源游戏引擎也能方便大家使用,令人熟知的Box2D(愤怒的小鸟使用的物理引擎),最近很火的Cocos2D-X(捕鱼达人),都能在BB10平台上得以展现,用这些引擎所开发的游戏,能够几乎不做修改的运行在BB10平台。
BB10平台内部引入Android虚拟机,能够将apk转化到bar,部署在BB10平台上。拥有Android应用的开发者,能够直接将自己的应用部署到BB平台。

2.Cascades对Qt库的支持程度
        QtCore、QtNetwork、QtSql、QtXML,Cascades中,支持这四个Qt的类库,但也不仅仅是这些。关于这些库中所能提供的类,请参阅如下地址:
https://developer.blackberry.com/cascades/reference/qt_index.html
        官方的Qt类库中并没有QImage、QPixmap、QString这样的基础类,但是实际使用中,仍然可以使用,所以建议Symbian开发者,用Qt中的Helper查阅相关的类,这将是查阅Qt类最快速的方法。
        此外,Symbian中的一些QtGui、QtMultimedia、QtOpenGL、QtOpenVG、QtScript、QtScriptTools、QtWebKit、Phonon、QAxContainer、QAxServer、QtUiTools等模块皆不可使用。部分模块如Multimedia、OpenGL,在Cascades官方的类库中,已经被得到重写,在BB10平台开发,不支持的Qt库将不能被调用。
        Cascades引用了Qt的信号、槽机制,只要Cascades类导入QObject头文件,并继承QObject,而且在类的开始定义了Q_OBJECT宏定义,就能像使用Qt信号、槽一样,去绑定信号和槽。定义信号、槽和触发信号和槽跟Qt完全相同。signals和slots等关键词还不能在IDE中高亮显示,官方网站透漏,9月的更新,将会加入这些关键词的高亮显示。
3.何谓Cascades
        Cascades是对于BB10平台Native代码的封装,Cascades封装的类继承了Qt类库的优秀经验,Q_OBJECT、Q_PROPERTY、Q_INVOKABLE等重要宏定义也被使用在了现在的Cascades类库中。Symbian程序员能够完全以使用Qt类一样的方式,去使用Cascades,这完全是无缝的。
        此外做一个重要的解释,Cascades现在封装的还不够,官方文档仍然不够详细,所以实际项目开发过程中,可能要涉及Native C/C++的调用。在Native SDK框架下,Cascades和Native C\C++是完全可以互相调用的,不存在界限。
4.为Cascades所要做出的改变
(1)略有差异的QML
在Qt中,Rectangle我们经常用来去描画一个矩形,或者是作为承载其他对象的容器,但是在Cascades,已经没有Rectangle对象,取而代之的是Container对象,用于承载其他对象。
总体来说,从Symbian跨越到Cascades,QML已经被黑莓官方重新封装过,有些Cascades类可以直接使用在QML中,但是有些类需要通过qmlRegisterType去注册到QML中。所有可以使用的QML对象将列在如下地址中:
https://developer.blackberry.com/cascades/reference/cascades.html
其中包含了Cascades所有支持的类,所能被QML引用到的属性,会列在QML properties里:
能被QML使用的信号在QML signals里:
能够被QML调用的方法,会有Q_INVOKABLE宏声明写在前面,如下所示:
在Cascades中,语法规则与Quick UI的语法基本保持一致,但是规则被加强,对象与对象的嵌套,必须放在合适的属性当中。比如Container对象中,需要含有Button、Container或其他对象,那么就需要把子控件放在Container中的content属性中,如:
Container{
content: Container{
}
}
部分情况下,content属性可省略。Content属性是接收bb::cascades::Control这个类对象,那么QML下的所有控件都是继承过Control类的,那么就能传入这个属性,具体开发中,调用QML控件的属性或者方法时,需要参照文档,传入合适的参数。
值得强调的一点,Symbian程序员喜欢用MouseArea对象,但在Cascades中,需要使用GestureHandler,或者是对象的onTouch信号。Cascades中的GestureHandler提供的手势有TapHandler(单击)、DoubleTapHandler(双击)、PinchHandler(两指)、LongPressHandler(长按)。滑入滑出或者复杂的手势,需要在onTouch、onTouchCapture、onTouchEnter、onTouchExit、onTouchPropagationModeChanged中,根据参数,去判断需要的手势,具体请详见官方文档。
(2)数据访问
        Symbian开发者可以使用QML下的openDatabaseSync()方法去创建一个临时的sqlite,或者使用QtSql库去创建sqlite关系型数据库。经测试,在Cascades中,QML中的临时数据库支持有问题,但是QtSql库能够很好支持。在Cascades中,提供两种非常容易使用的数据源——Json、Sql。
        如果Cascades项目需要使用非关系型数据库,那么JSON绝对是不二之选。Cascades已经帮开发者封装了一个非常方便的库,能够对JSON文件进行读取、写入操作,官方参考文档请访问:
https://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_json.html
        如果项目的数据关系比较复杂,需要以关系型数据库的方式去管理,那么既可以选择QtSql,也可以选择Cascades官方提供的封装类,具体可参考如下地址:
https://developer.blackberry.com/cascades/documentation/device_platform/data_access/working_with_sql.html
(3)新的UI布局
        Symbian开发者经常可能会使用Symbian中的ToolBar,但在Cascades中,支持TabbedPane、NavigationPane,具体可以体验BB10设备的官方Sample编译后的应用。
        此外Symbian中的Row、Column对象已经不能使用,需要使用Cascades中的Layout去实现控件的布局。Layout布局包含StackLayout(栈式布局)、AbsoluteLayout(绝对定位布局)、DockLayout(盒式布局)、FlowListLayout(浮动列表布局)、GridLayout(网格布局)、StackListLayout(栈式列表布局)。每个控件的布局属性,可通过LayoutProperties去进行设置。
        值得强调一点,关于布局,控件去使用LayoutProperties设置之前,需要在父级对象的Layout中设置布局。比如:
        在Symbian中,PageStackWindow可以将其他qml界面push进来,而在Cascades中,根据不同的Pane,会有不同的方法去push界面。NavigationPane会需要在跳转的信号当中,用id去调用NavigationPane,然后使用deprecatedPushQmlByString("NewPage.qml")去跳转,但是官方文档声称,这个方法是临时的,正式发布时候将会被替换。我估计是会替换为push("NewPage.qml")这个方法,现在这个方法还暂时不能使用。对于TabbedPane,需要将不同Tab的内容,写在同一个qml中,用Tab对象将其括起来,如:
TabbedPane{
    Tab{
        Page{
        }
    }
    Tab{
        Page{
        }
    }
    Tab{
        Page{
        }
    }
}
(4)安全沙箱
        相信做Symbian的开发者,对Symbian的安全性真的不敢恭维,我曾在Symbian中,做了一个扫描手机所有图片的小程序,我的程序竟然能访问到手机上,除Symbian系统以外的任何位置,但在Cascades中,以安全著称的黑莓是不会允许你这么做的。
        BB10平台引入了安全沙箱机制,一个应用只能访问一些特定的目录,且不能干扰到其他应用的正常运行。具体请访问如下地址:
https://developer.blackberry.com/cascades/documentation/device_platform/filesystem/index.html
        关于应用所能访问的目录,请自行参阅文档。通过实机连接到电脑上,是不能看到应用的沙箱的,如果需要看,请在IDE中,点击菜单栏的Windows -> Show View -> Target File System Navigator,选择连接好的手机,查看自己的沙箱。如果需要把一个外部目录加入到自己应用的Assets沙箱中,必须通过bar-descriptor.xml中的Assets这一项,把目录添加进去。否则编译后是不会把外部目录添加进沙箱的。
(5)权限控制
        基于安全沙箱的系统,对权限的限制也很多。Symbian开发者经常会跟Ability打交道,以此获得访问一些特定权限的API。在Cascades中,需要在bar-descriptor.xml中设置Permission,设置过Permission后的应用,会在第一次运行告知用户需要哪些权限,没有权限,就不能进行响应的操作。权限包括,声音播放、文件访问、网络访问、GPS支持等等。
(6)QML与C++集成
        Cascades平台跟Symbian几乎一样,能够注册C++类到QML,能够将C++对象设置为QML的Context。不仅如此Cascades提供更加灵活的对象访问方式,能够通过objectName找到一个对象,将其引用传给C++的指针,当然这个指针不能在C++中释放,否则会导致程序崩溃。关于QML与C++集成,请参考如下链接:
https://developer.blackberry.com/cascades/documentation/ui/integrating_cpp_qml/index.html
        其中列举出C++跟QML交互的所有方式,其中最后一节讲到能将控件注入到某个特定QML对象中,将会对开发有很大帮助。
5.开始你的Cascades之旅
        至此,Cascades对于Symbian开发者的基础入门教程已结束,如果需要更多的技术支持,请登陆中国黑莓开发者群组网(http://www.cnbbdevgroup.com/)。更多技术细节,可以参考黑莓开发者网站(https://developer.blackberry.com/)

转载于:https://blog.51cto.com/hoarn/1281348

BB10 NDK Cascades 框架简介和QT使用教程(与Nokia Symbian QT的区别)相关推荐

  1. QT学习教程-(1)QT新建项目并打包hellow world

    0.学习目标 编写一个hellow工程,并打包成可以运行的exe软件. 1.软件 (1)QT5.14 (2)VS2017 2.建立hellow 工程 (1)新建工程 (2)设置kit选择 (3)编辑U ...

  2. 执行exe报计算机中丢失qtdll,Qt入门教程(2) 直接运行Qt生成的exe报错缺少dll文件 | 阿拉灯...

    摘要 在Qt Creator中写完程序,在Qt Creator中的debug或者release状态下运行程序都是没有问题的,并且会在工程目录下生成对应的debug或者release文件夹,里面存放着生 ...

  3. qt开发教程视频c++入门自学qt5.5课程linux gui程序实战案例opia

    -//A25 QT教程/ ├──Qt 5开发教程 | ├──Qt初级教程 | | ├──第10课&基于Widget的GUI编程 – 其他控件 | | ├──第11课&基于Widget的 ...

  4. Qt使用教程:添加编译器(一)

    概述:本教程主要介绍如何在Qt中添加编译器.各种32-bit和64-bit的平台都支持Qt,并且通常可以在每个平台上使用GCC进行构建,可以使用供应商提供的编译器,也可以使用第三方编译器. Qt使用教 ...

  5. Qt编程(一) Qt框架简介

    1.Qt5 架构 qt 5将所有模块分为三个部分:Qt基本模块(Essentials).Qt扩展模块(Add-ons). 开发工具(Tools) 基本模块定义了基础功能,是核心,兼容所有平台.包括: ...

  6. Qt 之QWebEngineVie框架简介及加载网页方法

    文章目录 基于Widget的QWebEngine架构 QWebEngineView 关于QWebEngineView下QWebEnginePage的疑问 QWebEnginePage page和pro ...

  7. Qt IFW框架简介

    概述 Qt IFW,全称Qt Install Framework,这是Qt官方提供的一套实用工具,用于为Qt桌面平台(Linux,Windows和OS X)创建安装程序.官网介绍. 软件打包工具其实有 ...

  8. 【Android 热修复】热修复原理 ( 热修复框架简介 | 将 Java 字节码文件打包到 Dex 文件 )

    文章目录 一. 热修复框架简介 1.类替换 2.so 替换 3.资源替换 4.全平台支持 5.生效时间 6.性能损耗 7.总结 二. 将 Java 字节码文件打包到 Dex 文件 一. 热修复框架简介 ...

  9. QT学习笔记(1)----- QT简介

    名字由来 在<C++ GUI Programming with Qt 4>里有这么一段介绍: A Brief Histroy of Qt: The letter 'Q' was chose ...

最新文章

  1. 一个课题组两篇Cell发布病毒与宿主相互作用重要研究
  2. html5制作交互式课件,用flash制作交互式课件.ppt
  3. jdbc mysql 自动重连_Mysql中JDBC如何完成自动重连机制的案例
  4. 浅析Faiss在推荐系统中的应用及原理
  5. dedecms调用当前栏目的子栏目怎么操作
  6. pycharm 安装与激活
  7. 【数据结构与算法】算法的时间复杂度
  8. 5复数与复变函数(五)
  9. grpc(5):使用grpc+consul 开发服务调用
  10. makefile--编译出现,未定义的字符
  11. vue移动端下拉切换页面_详解vue移动端 下拉刷新
  12. 台电X80H平板安装ubantu
  13. ORBSLAM2学习(二):ORB源码分析
  14. mysql mpm_mysql监控工具:zabbix+MPM(Performance Monitor for MySQL)
  15. 如何打开cmd窗口及一些常用Dos命令
  16. cents7.6安装rancher
  17. Ubuntu20.04 磁盘空间扩展教程
  18. python中mysqldb的用法
  19. 王者荣耀使用什么编程语言开发的?
  20. 第五届世界互联网大会 乌镇新“网事” 世界新期待

热门文章

  1. 欧洲杯竞猜|周末在家预测欧洲杯淘汰赛
  2. 操作符的相关知识(二)
  3. 数组去重 php,PHP编程快速实现数组去重的方法详解
  4. 10年,知乎为何依旧“赚钱难”?
  5. java计算机毕业设计车辆保险平台系统研究与设计MyBatis+系统+LW文档+源码+调试部署
  6. 对于经常出现exeplorer.exe错误的问题的总结
  7. Palm OS、Windows CE及Linux OS之比较
  8. 我正在互站卖源码的日子●续
  9. WindbgX64和WinxpSp3虚拟机双击调试的参数设置
  10. (深入.Net平台和C#编程)第五章.体检套餐管理项目.20170408