在QML或C ++,BB10上设计UI

时间:2013-03-09 09:21:17

标签: c++ qml blackberry-10 blackberry-cascades

我需要写一个BB-10应用程序。 该应用可能具有相当多的UI,动态页面等。 我正在考虑编写应用程序逻辑(数据模型等) 在C ++中。 我应该使用QML进行UI设计吗?集成有多好和灵活 C ++和QML之间?我不会遇到一些问题吗? 我的UI可能包含许多QML页面(或对话框,如导航窗格等所示), 当用户点击QML中的某些操作时,我可能想要调用一些C ++ 代码或导航到其他QML页面等。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:4)

我对移动开发一无所知,但QML很好,应该使接口更易于维护,修改和移植到其他设备。

只要您使用Qts框架,使用QObjects,Q_PROPERTYQ_INVOKABLE方法,QML和C ++的集成就很容易......这很容易。

编辑:我必须补充一点,我没有发现从C ++中访问QML对象就像反之亦然。这是因为QML在少数数据类型的层次结构中组织对象,您必须使用findChild或检查objectName动态发现子节点。

无论如何,由于QML允许绑定属性,您应该能够使用您的数据创建一些C ++类,并且可以在UI上轻松访问它们;)

答案 1 :(得分:1)

当你需要使用C ++来控制应用程序时,我也会遇到这样的情况,qml没有太多的事情。最好的方法是通过NavigationPane继承你的类,如果你旁边有一些页面,那么使用QmlDocument::create()添加逻辑添加你的第一页导航使用工作表并向此类添加一些方法Q_INVOKABLE并在使用QmlDocument::create()创建新页面时传递setContext此类以访问这些方法。最后永远不会忘记添加或处理{{1} }信号删除页面和释放内存

答案 2 :(得分:1)

简短回答:C ++ / QML集成非常好。有时可能非常冗长,但在C ++中没有什么是你无法做到的。

即使用C ++做任何事情都要快一点。 BlackBerry正在推动用QML / Javascript编写所有UI工作流程的想法。

优势在于业务逻辑与业务逻辑之间的明显区分。应用流程。另一个优点是QML写入更短并且有希望维护。不要忘记您可以用C ++创建新的QML对象。

onTriggered: {
    var item = dataModel.data(indexPath);
    if (item.count > 0) {
        appLogic.updateFeed(item.id);
        navPane.push(resultPage);
    }
}