我需要写一个BB-10应用程序。该应用程序可能有相当多的用户界面,与动态页面等。我正在考虑编写应用程序逻辑(数据模型等)。在C++中。我应该使用QML进行UI设计吗?C++和QML之间的集成有多好和多灵活?我会不会遇到一些问题?我的UI可能由许多QML页面(或对话框,显示在导航窗格等)组成,当用户单击QML中的一些操作时,我可能想调用一些C++代码或导航到其他QML页面等。
发布于 2013-03-09 18:59:09
我不知道任何关于移动开发的东西,但QML很好,应该使界面更容易维护,修改和移植到其他设备。
只要你使用好Qt框架,使用QObjects,Q_PROPERTY和Q_INVOKABLE方法,QML和C++的集成就很容易。这真的很简单。
编辑:不过,我必须补充一点,我发现从C++访问QML对象并不像相反的那么容易。这是因为QML以几种数据类型的层次结构来组织对象,并且您必须使用findChild或检查objectName动态地发现子节点。
无论如何,由于QML允许绑定属性,您应该能够使用您的数据创建一些C++类,并在UI上轻松地访问它们;)
发布于 2013-03-10 03:13:01
我也经历过这样的情况,当你需要控制使用C++的应用程序时,qml不太do.best的方式,通过NavigationPane继承你的类,并将逻辑放在那里,使用QmlDocument::create()添加你的第一个页面,如果你在导航旁边有一些页面,使用sheet,并添加一些方法到这个类中,当你使用Q_INVOKABLE创建新页面时,传递setContext这个类来访问这些方法。最后,不要忘记添加或处理OnTrasitionEnded(Page*)信号来删除页面和释放内存
发布于 2013-04-18 14:47:45
简而言之: 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);
}
}https://stackoverflow.com/questions/15309115
复制相似问题