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

Design UI on QML or C++, BB10

本文关键字:UI BB10 QML c++      更新时间:2023-10-16

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

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

QML和c++的集成很容易,只要你使用好Qt框架,使用QObjects, Q_PROPERTYQ_INVOKABLE方法…这真的很容易。

编辑:我必须补充,虽然,我没有发现从c++访问QML对象那么容易。这是因为QML在少数数据类型的层次结构中组织对象,您必须动态地发现子节点,使用findChild或检查objectName

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

我也遇到过这样的情况,当您需要使用c++来控制应用程序时,qml做不到。最好的方式继承你的类由NavigationPane和把那里的逻辑添加你的第一页使用QmlDocument::create(),如果你有一些页面旁边的导航使用表和添加一些方法到该类Q_INVOKABLE和传递setContext这个类当你创建新的页面使用QmlDocument::create()访问这些方法。最后永远不要忘记添加或处理OnTrasitionEnded(Page*)信号来删除页面和释放内存

简短的回答:c++/QML集成非常好。c++有时可能很啰嗦,但在c++中没有什么是你不能做的。

即使用c++做所有的事情要快一点点。黑莓正在推动用QML/Javascript编写所有UI工作流的想法。

优势在于业务逻辑之间的清晰分离&应用程序流。QML的另一个优点是编写和维护的时间更短。不要忘记你可以在c++中创建新的QML对象。

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