2

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

4

3 回答 3

4

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

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

编辑:不过,我必须补充一点,我发现从 C++ 访问 QML 对象并不像相反那么容易。这是因为 QML 将对象组织在几个数据类型的层次结构中,并且您必须动态地发现子节点,使用findChild或检查objectName.

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

于 2013-03-09T10:59:08.763 回答
1

当您需要使用 C++ 控制应用程序时,我也会遇到这种情况,而 qml 并不多。最好的方法是通过 NavigationPane 继承您的类,并将逻辑添加到您的第一页,QmlDocument::create()如果您在导航使用表旁边有一些页面并添加一些方法此类,Q_INVOKABLE并在您创建新页面时通过 setContext 此类QmlDocument::create()来访问这些方法.. 最后永远不要忘记添加或处理OnTrasitionEnded(Page*)信号以删除页面并释放内存

于 2013-03-09T19:13:00.647 回答
1

简短回答:C++/QML 集成非常好。有时可能非常冗长,但在 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);
    }
}
于 2013-04-18T06:47:45.120 回答